Как выполнить JAXB-компилятор из ANT

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

3 ответа

Решение
<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.

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

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>

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

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

Другие вопросы по тегам