【发布时间】:2010-09-02 19:24:35
【问题描述】:
我在一个项目中使用 JAXB。 JAXB 的吸引力在于它与 JDK 捆绑在一起,我一直在命令行上使用 xjc.exe 从模式生成 .java 文件。我似乎找不到 JAXB ant 任务,确定在 http://jaxb.java.net 有下载但是我想使用捆绑到 JDK 中的 JAXB 有什么方法可以从 ant 调用 JAXB xjc.exe 是什么类打电话?
【问题讨论】:
我在一个项目中使用 JAXB。 JAXB 的吸引力在于它与 JDK 捆绑在一起,我一直在命令行上使用 xjc.exe 从模式生成 .java 文件。我似乎找不到 JAXB ant 任务,确定在 http://jaxb.java.net 有下载但是我想使用捆绑到 JDK 中的 JAXB 有什么方法可以从 ant 调用 JAXB xjc.exe 是什么类打电话?
【问题讨论】:
<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>
刚刚在 tools.jar 中寻找并在 com.sun.tools.internal 中找到了 XJCFacade.class 测试了上面的代码它可以工作它产生输出为 xjc.exe 似乎 XJC.exe 将此代码称为 com。 sun.tools.internal.xjc.XJCFacade
我的一个关键要求是 ant 文件可以在 eclipse 中工作,而不必包含 JDK 的路径名,这样文件就可以跨操作系统移植。我假设 tools.jar 通过安装的 JRE 首选项选项包含在类路径中。
【讨论】:
这是一个有用的链接:
Java SE 6 不提供 Ant 任务(参见 7.1.3):
基本上他们做了以下事情:
<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>
【讨论】: