javamake.jar & javamake-ant15.jar

關鍵詞: ant javamake 增量編譯

前一陣子找這兩個jar包,baidu來google去,不容易。
發現有些童鞋需要,拿出來共享一下,同時也讓搜索引擎快照下。
使用ant版本爲1.5(+)。

Ant本身也支持增量編譯,不過有兩個問題它沒有解決好:1、當修改了一個類的時候,與此類有依賴關係的類不會被重新編譯,ant只編譯了這個修改過的類。2、全局常量類的修改,ant無法定位。 說白了,這兩個問題是一個性質的。結果是,開發人員每次編譯時都要clean,再compile,cope…導致編譯時間過長,每次修改調試都要等待。
使用第三方的支持javamake,可以解決上述問題。原理是:第一次編譯時,javamake把所有class文件的時間戳記錄到數據庫(一個pdb文件)中,並記錄了所有的依賴關係(繼承、實現、調用…);之後再編譯時,javamake首先到數據庫中檢查source文件和class文件的時間戳是否一致,不一致的話,將source文件及其依賴關係(別的source文件)編譯。
詳細見英文原文:[url]http://www.experimentalstuff.com/Technologies/JavaMake/javamake.html[/url]

1.如果不知道怎麼編寫支持增量編譯的build.xml,請參考以下網址:
[url]http://www.experimentalstuff.com/Technologies/JavaMake/ant.html[/url]
2.如果init中有clean,應該去掉clean,不然javamake的威力沒法釋放了。
我是在init中定義一個task:

<taskdef name="javamake" classname="com.sun.tools.javamake.ant.JavaMake">
<classpath>
<pathelement location="${classpath.dir}/javamake-ant15.jar"/>
</classpath>
<classpath>
<pathelement location="${classpath.dir}/javamake.jar"/>
</classpath>
</taskdef>

3.如果在<javamake ... />中設置了verbose="true",那麼可以看到每次修改源文件再編譯時,javamake具體做了哪些“地下工作”。

[END]:我使用增量編譯後,每次等待時間是原來的1/4左右,depending.
發佈了40 篇原創文章 · 獲贊 0 · 訪問量 4281
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章