Почему ANT задача javac перекомпилирует мою .java снова и снова - PullRequest
1 голос
/ 26 ноября 2011

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

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

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

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

Моя цель (.class) находится в стволе / корзине

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

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

<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. Действительно странно! Кто-нибудь хотел бы сказать мне, почему? Благодарю.

1 Ответ

3 голосов
/ 26 ноября 2011

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

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

...