17

我在一个项目中使用 JAXB。JAXB 的吸引力在于它与 JDK 捆绑在一起,我一直在命令行上使用 xjc.exe 从模式生成 .java 文件。我似乎找不到 JAXB ant 任务,确定在http://jaxb.java.net有下载但是我想使用捆绑到 JDK 中的 JAXB 有什么方法可以从 ant 调用 JAXB 吗xjc.exe 调用的类?

4

3 回答 3

20
<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 首选项选项包含在类路径中。

于 2010-09-02T21:10:19.333 回答
14

这是一个有用的链接:

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>
于 2010-09-02T19:38:52.687 回答
1

您无法在 JAXB2 Basics 中找到几个示例 Ant/JAXB 项目:

http://confluence.highsource.org/display/J2B/Latest+Release

于 2010-09-07T15:18:59.227 回答