2013-02-28 45 views
5

我正在編寫用於編譯源文件夾的ant版本,這裏是我的腳本目標用於編譯。如何使用ANT編譯僅更改的源文件

<target name="compile" depends="init"> 
     <javac srcdir="${src.dir}" destdir="${classes.dir}" debug="true"> 
      <classpath refid="master-classpath"/> 
     </javac> 

    </target> 

在我的項目中,我有大約1000 .java文件。當有一個.java文件被改變時,目標往往會編譯所有.java文件。這使發展非常緩慢。我只是想知道是否有任何方法或代碼來改變任務的行爲,只編譯修改或更改的.java文件而不是全部.java文件。

請幫幫我。

+0

正在使用Eclipse? – 2013-02-28 06:26:39

+0

檢查鏈接http://stackoverflow.com/questions/497850/how-to-execute-ant-tasks-on-only-files-that-have-been-modified – Biswajit 2013-02-28 06:31:50

+0

我檢查了。這是爲了執行不編譯的任務。 – 2013-02-28 06:35:01

回答

10

據我所知,只編譯修改的java文件是ant javac任務的默認行爲。 Ant使用.java文件的時間戳及其對應的.class文件來確定是否需要重新編譯Java文件。我在很多項目中使用過它,從來沒有問題。

這裏有一些事情你可以檢查

  1. 是您的源代碼樹的目錄結構符合Java包 結構?請參閱Why does ant always recompile all my Java files?。這可能是FAQ中的第一個原因。

  2. 我看你的compile目標取決於init的目標? init目標是做什麼的?它依賴於任何clean目標還是清除.class文件?

  3. 你的螞蟻版是什麼?你可以嘗試一個不同的ant版本,看看你是否仍然有同樣的問題?

  4. 如果以上都沒有修復您的問題,編譯後,您可以手動檢查.class文件的時間戳,並將其與相應的.java文件的時間戳比較?

1

所以,如果你不刪除任何依賴任務中的classes目錄,說'乾淨'的javac任務固有編譯只改變了的java文件。這是javac任務提供的開箱即用功能。希望能幫助到你。

+0

謝謝圖沙爾薩加爾 – 2016-01-05 05:43:35

相關問題