筆者之前在項目中使用的最多的打包工具要數fatjar了。打包的時候習慣於先指定可執行類,而後將全部引用的jar包以及源碼生成的class一塊兒打到 一個包裏面,運行程序的時候直接運行命令:java –jar jarname.jar。看似很方便。可是,這樣作有兩個缺點:1.將全部jar包都整合到一塊兒,致使jar包太大,通常最小几百k,最大十幾MB都有, 上傳至服務器時,耗時較長。2.每次更新jar包,引用的包又要從新打進去。其實引用的包根本就沒作更改,特別是引用的jar包較多時,打包時間較長。html
基於上面兩個缺點,筆者開始將源程序生成的class與引用的jar包分離。即:源程序單獨打一個jar包,引用的jar包放置在統一的lib目錄。在運 行程序的時候,使用shell腳本將lib下面的jar包都加入到環境變量之中。這樣運行的較最原始使用fatjar時期稍微方便了一些:不用每次都重複 打引用的jar包,而且此時jar包變得很小,上傳很方便。但時惟一不足的地方是須要本身寫shell,將引用的jar包加入環境變量。並 且,eclipse那個導出jar包的功能用着實在不習慣。java
參考了一些同事的作法:1.使用fatjar,classes、jars全打一塊兒。此方法果斷pass。2.使用eclipse的導出功能,導出jar包 以後。使用winrar修改jar包中的MANIFEST.MF文件,在其中加入Class-Path。此方法雖可行,但每次打包以後均需手動修改,麻煩 啊同志們。android
最後,看了不少開源軟件均使用ant打包,因而決定嘗試一下。捉摸了一段時間,寫了個例子。放在下面,供你們參考,也爲了使本身之後回顧。shell
工程目錄結構以下圖所示:
apache
工程引用了三個jar包:helloant-201111232256.jar、google-201111261330.jar、android-201111262247.jar。windows
工程只寫了一個java文件SayHello.java,其內容以下:服務器
main函數中的三行引用了三個jar包中的類,做用分別爲打印Hello Ant! Hello google!以及Helloandroid!app
Ant對應的配置文件爲build.xml.eclipse
其內容以下:函數
以後開始打包吧。
運行方式:能夠用eclipse自帶的,也可使用命令。
使用Eclipse自帶ant方式運行時注意選第二個ant build,在裏面選擇執行jar任務。
使用ant命令,須要先設置ant環境變量,以後在java project目錄下執行ant jar命令即可以打包了。另外還能夠運行ant、ant jar、ant run、ant clean等命令來執行編譯、打包、運行jar包、清理生存的文件等操做。
附Windows下設置ant環境變量的方式:
一、 設置 JAVA_HOME
二、 設置ANT_HOME 使其指向ant解壓得路徑,如c:\apache-ant-xxx
三、 在PATH中加入%ANT_HOME%/bin
四、 打開命令行,輸入ant –version看看能不能出來版本信息。能,設置好了。