Почему задача ANT javac снова и снова перекомпилирует мой .java

Исходный и целевой каталог будут рекурсивно просканированы на предмет наличия исходных файлов Java для компиляции. Будут компилироваться только файлы Java, у которых нет соответствующего файла .class или файл класса старше, чем файл .java.

Вышеупомянутое взято из javac Task, ANT Apache. Но я действительно не понимаю, почему в моем случае .java перекомпилируется снова и снова.

Мой рабочий каталог ... / trunk

Мой источник (.java) находится в trunk / src

Моя цель (.class) находится в багажнике / bin

В моих файлах .java используется пакет по умолчанию, а именно без объявления пакета.

Таким образом, в моем build.xml используется задача javac.

<javac srcdir="${src}"
   destdir="${bin}"
   includeantruntime="false">
  <classpath>
<pathelement location="${bin}"/>    
<pathelement path="${java.class.path}"/>
  </classpath>
</javac>

где я определил

<property name="src"    value="src"/>
<property name="bin"    value="bin/"/>

Вроде все в порядке, но каждый раз, когда я запускаю ANT, он перекомпилирует файлы .java. Действительно странно! Кто-нибудь хотел бы сказать мне, почему? Спасибо.


person zell    schedule 26.11.2011    source источник


Ответы (1)


О, я получил ответ. Извините, я не рассказал всю историю выше. На самом деле, у меня есть генерация лексера / парсера antlr до части "javac". И для этого я должен был добавить опцию «-make», чтобы лексер и синтаксический анализатор не создавались снова с более поздней временной меткой. (из Использовать ANT для ANTLR3 < / а>

Параметр командной строки ANLTR3 «-make» создает новые файлы только в том случае, если они старше грамматики. Такое поведение может повлиять на зависимые задачи, такие как «компиляция», что может привести к тому, что ничего не будет обрабатываться, поскольку оно актуально.

person zell    schedule 26.11.2011