【问题标题】:Why does ANT javac task recompile my .java again and again为什么ANT javac任务一次又一次地重新编译我的.java
【发布时间】:2011-11-26 18:08:38
【问题描述】:

将递归扫描源目录和目标目录 要编译的 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 文件。真的很奇怪!有人想告诉我为什么吗?谢谢。

【问题讨论】:

    标签: ant javac recompile


    【解决方案1】:

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

    ANLTR3 命令行选项“-make”仅在 如果它们比语法更老。这种行为可能有 对“编译”等依赖任务的影响,这可能导致 没有任何内容需要处理,因为它是最新的。

    【讨论】:

      猜你喜欢
      • 2017-01-11
      • 1970-01-01
      • 2022-01-26
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 2021-03-30
      • 1970-01-01
      相关资源
      最近更新 更多