java ant打包工具_ant--Java工程打包工具

真是,博客停更了兩個月,罪過罪過

寫這篇博客是簡介一下ant。這是一個Java的打包工具。很像是C的Makefile工具。不過是基於xml格式的,所以在語法上可能會更隨意一點,不會像是Makefile一樣困擾於嚴格縮進的問題。

ant學習起來其實很簡單,一篇博客的內容就可以了。因為知識點就那么多。不過也像是Makefile,打包一個大工程也是很不好寫的,都是要處理好依賴關系。廢話少說,下面進入正題。

一:安裝

這步,去ant.apache.org下載ant的二進制包(不要下載源碼那個包,除非你想研究)。然后就想Java一樣配置環境變量就ok了。環境變量指向bin目錄。配置好了之后,就可以使用了。打開cmd,運行ant -version。

二:建立build.xml文件

這就是一個簡單的ant文件。

保存為build.xml文件。在文件所在目錄下執行:ant命令。會看到

$ ant

Buildfile: build.xml

hello:

[echo] Hello, World

BUILD SUCCESSFUL

Total time: 2 seconds

分析:從上面的例子中,我們可以看到。build.xml簡單的有以下級別:

·project(project標簽是build文件的根元素,可以包括一個或多個target,default屬性是必須的,並且指明默認執行的target。因為ant命令無參數指定時會運行default target)

·target(這個在后面有更深入的討論,這里只要知道target的name屬性是必須的就好了)

·task(ant中的最小單元,一般就是執行一些命令了)

這個樹形關系是最基本的build文件結構。

p.s.可以通過一些命令參數做一些事。比如下面這句會指定對echo.xml執行ant,同時指定goodbye為默認的target

ant -f echo.xml goodbye

三:開始,打包你的Java程序

先簡單的對付一個文件。先寫一個hello world的Java程序吧(這里不寫,並且不要問我理由)。為了節約篇幅,這里不一步一步講了,就直接把“編譯-打包-運行”都做得一個build文件內容發上來。

basedir="."

includes="**/*.class"

/>

classpath="hello.jar"

fork="true"

/>

分析一下,很好讀懂。

1. 這個工程的默認執行是compile。這個target的task是執行javac命令(ant所支持的命令,后面的“java”也是)編譯java文件。srcdir指定要編譯的Java文件的所在位置。

2. 第二個target是jar,后面這個depend="compile"很關鍵。表明命令之間的以來關系(我們總不能不編譯就打包或者運行吧)。注意一下,在jar任務里我還指定生成manifest文件(這是Java的配置文件,不明白的一查就會懂了)

3. 最后一個是run這個target,運行就是調用java命令就可以了,指定好相應的參數。這里熟悉java命令的同學應該很容易就明白了。另外,fork="true"表示請求用一個新的JVM運行。

運行一下,這里建議用命令ant run運行這個build文件。如果你指定了default="run",就直接ant就可以了。

然后我們可以驗證一下,用這個命令java -jar hello.jar。看到了么?

四:深入,打包你的Java工程--使用ant的properties

還是先看內容:

destdir="${obj-dir}"

/>

basedir="${obj-dir}"

/>

classpath="${lib-dir}/hello.jar"

fork="true"

/>

tips:讀build文件,最好就要根據default指定的target,根據依賴關系倒序讀。

分析一下,這個文件其實可以應對很多你的Java工程的(當然,這里我們忽略只有一個hello.java的事實)。溫習一下,一個好的工程可以如下,一般都有obj、lib、src等有意義的目錄。src目錄存放源代碼,obj存放編譯好的代碼(這里是.class),lib目錄存放打包文件(生成的庫)。感覺說了這些,上面的代碼應該沒什么問題了,需要注意的是,mkdir等標簽其實調用的都是ant的命令。

執行一下ant,運行成功。當你發現你想干掉你的文件,ant clean。這就是這個build文件里的其它target了。

五:what's more?

就像是C的Makefile一樣。ant也支持一些更復雜的操作,比如條件語句。這些一般用來寫你的測試(test)任務,像上一小節的clean任務似的,這樣你的工程看起來更加健壯。

更好的使用ant來測試是使用Junit。不過這里不介紹了。

六:寫在最后

學習ant其實對我是出於無奈...hadoop的eclipse插件沒搞定,就只好用ant了...不過感覺ant比eclipse更好些。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值