为什么ANT javac任务会一次又一次地重新编译我的.java

时间:2011-11-26 18:08:39

标签: ant javac recompile

  

将递归扫描源和目标目录   要编译的Java源文件。只有没有的Java文件   相应的.class文件或类文件的旧版本   .java文件将被编译。

上述内容来自javac Task, ANT Apache。但我真的不明白为什么在我的情况下.java会一次又一次地重新编译。

我的工作目录是... / trunk

我的源码(.java)位于trunk / src

我的目标(.class)位于trunk / bin

我的.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 个答案:

答案 0 :(得分:3)

哦,我得到了答案。对不起,我没有告诉上面的所有故事。实际上,我在“javac”部分之前有一个antlr lexer / parser生成。为此,我应该添加“-make”选项,以便不会使用更新的时间戳再次生成词法分析器和解析器。 (来自Use ANT for ANTLR3

  

ANLTR3命令行选项“-make”仅生成新文件   他们比语法更老了。这种行为可能有一个   对“编译”等依赖任务的影响,这可能导致   没有什么可以处理的,因为它是最新的。