JAXB с Ant: как заставить XJCTask уважать <depends> - PullRequest
0 голосов
/ 09 августа 2011

мы используем Jaxb с различными файлами схемы, которые включают некоторые общие части. Для этого мы используем Ant XJCTask из дистрибутива JAXB:

<xjc classpath="bin" removeOldOutput="yes" schema="main-schema.xsd" target="src" extension="true">
        <arg value="-no-header"/>
        <depends dir=".">
            <filename name="some/dir/included1.xsd"/>
            </depends>
        <produces dir=".">
            <include name="some/package/dir/*.java"/>
            </produces>
    </xjc>

Но, по-видимому, зависимость не имеет никакого влияния, так как можно увидеть бегающий муравейник -

      [xjc] Checking timestamp of /local0/mginkel/workspace/main-schema.xsd
  [xjc] Checking timestamp of /local0/mginkel/workspace/some/package/dir/Generated1.java
  [xjc] Checking timestamp of /local0/mginkel/workspace/some/package/dir/Generated2.java

Есть ли способ правильно отслеживать зависимости от включений в ant. Я только хочу перекомпилировать привязки, если необходимо, но я определенно хочу перекомпилировать, если один из включений изменился. (это то, что в настоящее время не работает).

1 Ответ

0 голосов
/ 09 августа 2011

Я думаю, что ваша dir настройка неверна. Вот тот, который мы используем на работе (и он работает для нас):

<xjc schema="${xsd.location}/eviction.xsd" destdir="${src}"
  package="com.onsitemanager.eviction.schema">
  <produces dir="${src}/com/onsitemanager/eviction/schema" includes="*.java"/>
</xjc>

(Не беспокойтесь слишком сильно о значениях ${xsd.location} и ${src}, если они полезны для вашей настройки относительно того, где вы храните свои файлы .xsd и исходные файлы, соответственно. )

Следует отметить, что dir - это каталог, в который выводятся файлы .java, а includes - это просто *.java.

...