Как выполнить JAXB-компилятор из ANT - PullRequest
15 голосов
/ 02 сентября 2010

Я использую JAXB в проекте. Привлекательность JAXB заключается в том, что он связан с JDK. Я использовал xjc.exe в командной строке для генерации файлов .java из схемы. Кажется, я не могу найти задачу муравья JAXB, конечно, есть загрузка на http://jaxb.java.net, однако я хочу использовать JAXB, который связан с JDK, есть ли способ вызвать JAXB из муравья, какой класс Вызов xjc.exe?

Ответы [ 3 ]

18 голосов
/ 03 сентября 2010
<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 и обнаружил класс XJCFacade.class в com.sun.tools.internal, протестировав приведенный выше код. Он работает, выводит его как xjc.exe. Кажется, XJC.exe вызывает этот код com. sun.tools.internal.xjc.XJCFacade

Одно из моих ключевых требований состояло в том, чтобы файл ant работал в eclipse без необходимости указывать путь к JDK, чтобы этот файл можно было переносить через операционные системы. Я предполагаю, что tools.jar включен в classpath через установленные параметры предпочтений JRE.

12 голосов
/ 02 сентября 2010

Вот полезная ссылка:

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>
1 голос
/ 07 сентября 2010

Вы не можете найти несколько примеров проектов Ant / JAXB в Основах JAXB2:

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

...