Ant的使用
Ant的使用
什么是Apache Ant
Apache Ant是一個基于java的軟件構建工具(build tool),理論上它有點類似C/C++的make工具
為什么要用ant?
make, gnumake, nmake, jam或其他已有的構建工具里,為什么還需要單獨搞這個ant工具呢??
因為前面的這些構建工具都有局限性,Ant的原創作者在開發跨多個平臺的軟件時無法忍受。
- make工具本質上是基于shell: make會評估一些系統依賴,然后才能執行命令。這意味著你可以輕松地使用或編寫您正在處理的操作系統的任何程序來擴展這些構建工具。但是,這也意味著你將自己限制在操作系統上,或者至少是Unix類的操作系統類型。
- makefile工具本身也是很討厭的,任何一個曾經用makefile工作的人都會遇到麻煩的tab問題?!坝捎谖以趖ab前面加了一個空格導致我的命令行總不湊效”,Ant的原創作者說了太多遍了。像Jam這樣的工具在很大程度上處理了這個問題,但是仍然要使用和記住它的一些格式。
而Ant是不同的,Ant使用Java類擴展,而不是使用基于shell命令擴展。與編寫shell命令不同,配置文件是基于xml的,調用一個目標樹來執行各種任務。每個任務由實現特定任務接口的Java對象運行。?
Ant去掉了一些shell命令(比如find . -name foo -exec rm {})的功能,但它提供了類似的功能,一個跨平臺(work anywhere and everywhere)的能力。如果你真的需要執行這些shell命令,Ant有一個<exec>任務允許根據正在執行的操作系統執行不同的命令。
說白了,Ant工具為了解決跨平臺問題。
使用Apache Ant
編寫一個簡單的構建文件
Apache Ant的構建文件是用build.xml編寫的。?
每個構建文件包含一個項目(project)和至少一個默認目標(target)。目標包含任務(task)。
Projects?
一個project包含下面3個屬性
| name | 項目名稱 |
| default | 在不提供目標時使用的默認目標 |
| basedir | 完成所有路徑計算的基本目錄。 這個屬性可能會被預先設置“basedir”屬性覆蓋。 如果該屬性和屬性值都沒有設置,則將使用構建文件build.xml所在的目錄路徑。 |
可選地,項目的描述可以由頂級的<description>元素提供。
每個項目定義一個或多個目標。目標是您想要執行的一組任務。當啟動Ant時,可以選擇要執行的目標。當沒有目標時,項目的默認值default被使用。
Targets
一個目標可以依賴于另外目標,使用depends屬性。?
例如,您可能有一個用于編譯的目標,和一個發布的目標。當你執行發布的目標時不得不先執行編譯的目標,所以發布目標取決于編譯目標。應該注意的是,Ant的depends屬性, 如果它依賴的目標沒有執行,而是直接執行當前目標,它也會自動去執行依賴的目標。
Tasks?
任務是可以執行的一段代碼。 一個任務可以有多個屬性(或者參數,如果你喜歡的話)。?
屬性的值可能包含對屬性的引用。這些引用將在任務執行之前解析。?
任務有一個共同的結構:?
<name attribute1="value1" attribute2="value2" ... />?
name就是任務的名稱,attributeN是屬性名,valueN是該屬性的值。?
所有任務共享一個任務名屬性。該屬性的值將用于Ant生成的日志消息。
Properties
參考
- Apache Ant Introduction
- Hello World with Apache Ant
轉載于:https://www.cnblogs.com/fireway/p/7192453.html
總結
- 上一篇: spring基础系列--JavaConf
- 下一篇: Linux搭建PHP环境(LAMP)