Как выполнить 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: