Ant輕便,靈巧,不像Maven一般沉重。
但是,這是我之前的看法。之前一直使用Eclipse自帶的編譯工具進行編譯,然后采用ant進行打包;但是Eclipse編譯工具編譯之后的jar包參數名稱之類的都丟失了,變成了arg0,arg1這種;對於引用方而言十分不友好(當然可以導出javadoc,但是那不是費二遍事嘛),最近獲知可以通過采用javac進行編譯,指定-g:vars,即可保證編譯之后參數名稱保留。
於是嘗試着將javac加入到Ant文件中,其實直到此時我才知道eclipse是自帶編譯器的,因為網上有帖子講述分析eclipse的編譯器的class文件和javac編譯文件不同,細節沒看,確定一點,這兩者應該不是一回事。但是我添加了javac之后,運行builder.xml發現報錯,告知slf4.jar沒有。
直到此時我才清晰的了解到:我們采用Eclipse那套機制,包括工程引用,jar包引用以及Eclipse自帶的編譯器,這些是成套的東東,如果你想要使用Ant來進行編譯,那么需要你將所有的引用關系,以及引用jar包關系,全部配置到Ant配置文件里面,這樣Eclipse退化為了一個代碼結構管理(當然還包括JIT編譯找錯)的小工具。
如果這樣我還是使用Eclipse來進行管理和編譯吧,采用Ant編譯成本太高了,他還是做做打包這件事我覺得是最好的。
聲明變量
<project>
<property name="dir.buildfile" value="."/>
<property name="dir.workspace" value="${dir.buildfile}/.."/>
<property name="dir.jarfile" value="D:/tmp/setup"/>
"."代表(Eclipse)工程根目錄
復制文件夾
<copy todir="${dir.jarfile}">
<fileset dir="${dir.buildfile}">
<include name="install/"/>
<include name="install_monitor/"/>
<include name="scripts/"/>
</fileset>
</copy>
這里注意install/代表把文件夾以及文件夾里面的東西都拷貝過去;install則代表只是拷貝空文件夾;如果沒有include節點,代表把${dir.buildfile}所有的文件拷貝到todir下面。
