代码之家  ›  专栏  ›  技术社区  ›  ams

如何从Ant执行JAXB编译器

  •  15
  • ams  · 技术社区  · 15 年前

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

    3 回复  |  直到 11 年前
        1
  •  18
  •   ams    15 年前
    <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中找到了xjcafacade.class,测试了上面的代码。它工作时生成的输出是xjc.exe。xjc.exe似乎调用了这段代码com.sun.tools.internal.xjc.xjcafacade。

    我的一个关键要求是,Ant文件在Eclipse中可以工作,而不必包括JDK的路径名,这样文件就可以跨操作系统进行移植。我假设tools.jar通过安装的jre首选项选项包含在类路径中。

        2
  •  12
  •   bdoughan    11 年前

    以下是一个有用的链接:

    JavaSE 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>
    
        3
  •  1
  •   lexicore    15 年前

    您在JAXB2基础知识中找不到几个示例Ant/JAXB项目:

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