如何从ANT执行JAXB编译器
我正在一个项目中使用JAXB。JAXB的吸引力在于它与JDK捆绑在一起,我曾在命令行上使用xjc.exe从模式生成.java文件。我似乎找不到JAXB ant任务,当然有一个下载,但是我想使用捆绑到JDK中的JAXB。有没有办法从ant调用JAXB?xjc.exe调用什么类?这里有一个有用的链接:如何从ANT执行JAXB编译器,ant,jaxb,java,jaxb2,Ant,Jaxb,Java,Jaxb2,我正在一个项目中使用JAXB。JAXB的吸引力在于它与JDK捆绑在一起,我曾在命令行上使用xjc.exe从模式生成.java文件。我似乎找不到JAXB ant任务,当然有一个下载,但是我想使用捆绑到JDK中的JAXB。有没有办法从ant调用JAXB?xjc.exe调用什么类?这里有一个有用的链接: JavaSE6不提供Ant任务(见7.1.3): 基本上,他们做了以下工作: <target name="xjc" description="...."> <ex
<target name="xjc" description="....">
<exec executable="${jdk.dir}/bin/xjc.exe">
<arg value="-d"/>
<arg value="${src.dir}"/>
<arg value="-p"/>
<arg value="com.mydomain.jaxb"/>
<arg value="${etc.dir}/myschema.xsd"/>
</exec>
</target>
刚刚在tools.jar中搜索,发现com.sun.tools.internal中的XJCFacade.class测试了上面的代码,它可以工作,它生成的输出是xjc.exe,似乎xjc.exe调用了这个代码com.sun.tools.internal.xjc.XJCFacade
我的一个关键要求是ant文件可以在eclipse中工作,而不必包含JDK的路径名,这样文件就可以跨操作系统移植。我假设tools.jar通过安装的JRE首选项选项包含在类路径中 在JAXB2基础中找不到几个示例Ant/JAXB项目:
感谢我们的回复,我已经熟悉了这个链接。问题在于,此解决方案要求类路径上存在jaxb-xjc.jar,并且ANT任务引用的类在类路径上的任何位置都不存在。我不想下载JAXB2 RI,只想使用ANT任务。我正在寻找一种解决方案,它不需要从最新的JDK 6以外的网络下载任何东西,而且它与Eclipse ANToT很好地工作在架构文件本身的路径上(也适用于-D属性),考虑使用代替“路径”版本将自动转换路径分隔符,转义shell的特殊字符等。如果不使用路径,则如果路径或文件名是从任何类型的外部数据生成的,则生成文件中可能存在命令注入漏洞。
<target name="generate-jaxb-code">
<java classname="com.sun.tools.internal.xjc.XJCFacade">
<arg value="-p" />
<arg value="com.example"/>
<arg value="xsd/sample.xsd" />
</java>
</target>