2011-11-26 56 views
1

源和目標目錄將遞歸掃描 要編譯的Java源文件。只有沒有 對應的.class文件或類文件比 .java文件更舊的Java文件纔會被編譯。爲什麼ANT javac任務重新編譯我的.java

以上是從javac Task, ANT Apache。但我真的不明白爲什麼在我的情況下.java被重新編譯一遍又一遍。

我的工作目錄是... /後備箱

我的源(的.java)位於主幹/ 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文件。真奇怪!任何人都想告訴我爲什麼?謝謝。

回答

3

哦,我得到了答案。對不起,我沒有告訴上面的所有故事。實際上,我在「javac」部分之前生成了antlr詞法分析器/解析器。爲此,我應該添加「-make」選項,以便詞法分析器和解析器不會再以最近的時間戳生成。 (從Use ANT for ANTLR3

的ANLTR3命令行選項「 - 製作」只有在 情況下生成新的文件,它們比語法以上。這種行爲可能對像「編譯」相關任務的 效果,這可能導致 無法處理,因爲它是最新的。

相關問題