Ant簡介 java
Ant是基於java的構建工具。理論上來講它相似與make工具,可是卻克服了make的一些固有的缺陷. linux
傳統的Make是基於操做系統shell的構建工具,雖然也能夠基於工做的os對make工具進行擴展,但卻難以實現跨平臺構建.Ant基於java擴展功能,而且經過在xml中的target中定義的task進行構建任務的定義.其中每個任務都是實現特定任務接口的類.同時Ant也提供了exec任務容許調用不一樣的操做系統的shell命令.shell
Ant主要元素介紹windows
Ant使用xml文件定義構建過程,每個構建文件都會包括一個project和至少一個target.Target會包含task元素。每個task元素能夠經過id屬性被引用.eclipse
1.Projectside
Project元素有三個屬性:name、default、basedir.同時其能夠包含一個description元素對項目進行描述.工具
name:project的名稱,不是必須屬性;學習
default:執行構建的時候不指定要執行的target,則默認執行此設置的target;ui
basedir:設置基準目錄,則後續全部的相對位置則以此設置爲基準路徑;若是不設置則以包含構建文件的目錄爲基準目錄;this
<?xml version="1.0" encoding="UTF-8"?> <project name="ProjectExample" default="default" basedir="."> <description> 學習project的用法 </description> <target name="default" > <echo>${basedir}</echo> </target> <target name="echoBasedir"> <echo>${basedir}</echo> </target> </project>
2.Targets
每一個Project會定義一個或者多個target.Target是待執行的task的集合.當啓動執行ant的時候能夠指定要執行的target,若是沒有指定則執行project設置的默認的target/一個target能夠經過depends來定義其依賴的其餘的target,好比打包的target依賴編譯的target.
<?xml version="1.0" encoding="UTF-8"?> <!-- ====================================================================== 2015年6月1日 下午9:35:09 targetExample description hou ====================================================================== --> <project name="targetExample" default="default"> <description> description </description> <!-- ================================= target: default ================================= --> <target name="default" depends="depends" description="description"> <echo>excuting default target</echo> </target> <!-- - - - - - - - - - - - - - - - - - target: depends - - - - - - - - - - - - - - - - - --> <target name="depends"> <echo>excuting depends target</echo> </target> </project>
3.Tasks
Task是一段能夠被執行的代碼.一個task能夠有多個屬性(attribute).這些屬性(attribute)的值能夠引用屬性(property),被引用的屬性會在任務執行以前被解析成具體的值.task的通用結構以下
<name attribute1=」value1」 attribute2=」value2」.../>
Ant既內置了一些經常使用的task,同時也提供了便利的擴展機制.
<?xml version="1.0" encoding="UTF-8"?> <!-- ====================================================================== 2015年6月1日 下午9:59:23 taskExample description hou ====================================================================== --> <project name="taskExample" default="default"> <description> description </description> <property name="dirName" value="taskdir "></property> <!-- ================================= target: default ================================= --> <target name="default" description="description"> <echo>list current directory </echo> <exec executable="ls"></exec> <echo>make [${dirName}] directory </echo> <mkdir dir="${dirName}"/> <echo>list current directory </echo> <exec executable="ls"></exec> <delete dir="${dirName}"></delete> </target> </project>
4.Properties
屬性是經過設置一個能夠在構建過程當中重複使用的字符串來達到自定義構建過程的重要方式.一般狀況下是在構建文件中直接定義屬性,固然也能夠在外部定義屬性.屬性的名字是大小寫敏感的.屬性的引用是經過${屬性名}來實現的.Ant中的屬性相似java裏的字段,可是屬性一經設置就不可更改.
Ant 中有許多預約義的屬性.首先, Java 環境設置用於運行 Ant 的全部系統屬性, 都可做爲 Ant 屬性使用,好比 ${user.home} .除了這些屬性以外,Ant 還定義了它本身的一小組屬性,包括${ant.version},這個屬性包含 Ant 的版本;以及 ${basedir},這個屬性是項目目錄的絕對路徑(由包含生成文件的目錄所定義,或者由 project 元素的可選 basedir 屬性所定義). 屬性常常用於引用文件系統上的文件或目錄,可是對於使用不一樣路徑分隔符(例如,/ 與 \)的平臺來講,這樣可能在跨越不一樣平臺時致使問題.Ant 的 location 屬性專門設計用於以平臺無關的方式包含文件系統路徑.
<project name="propertiesExample" default="dist" basedir="../"> <description> simple propertiesExample build file </description> <!-- set global properties for this build --> <property name="src" location="src"/> <property name="build" location="build"/> <property name="dist" location="dist"/> <target name="init"> <!-- Create the time stamp --> <tstamp/> <!-- Create the build directory structure used by compile --> <mkdir dir="${build}"/> </target> <target name="compile" depends="init" description="compile the source " > <!-- Compile the java code from ${src} into ${build} --> <javac srcdir="${src}" destdir="${build}"/> </target> <target name="dist" depends="compile" description="generate the distribution" > <!-- Create the distribution directory --> <mkdir dir="${dist}/lib"/> <!-- Put everything in ${build} into the wufengtinghai.alm-${DSTAMP}.jar file --> <jar jarfile="${dist}/lib/wufengtinghai.alm-${DSTAMP}.jar" basedir="${build}"/> </target> <target name="clean" description="clean up" > <!-- Delete the ${build} and ${dist} directory trees --> <delete dir="${build}"/> <delete dir="${dist}"/> </target> </project>
運行Ant
Ant做爲命令行工做,天然能夠經過unix/linux的shell和windows的cmd進行條用.同時能夠經過java的IDE進行調用,好比eclipse.
從命令行直接調用ant,這樣ant會從當前目錄尋找默認的build.xml,並使用默認的target執行生成過程.同時也能夠經過ant -f buildfilename targetname來指定構建文件和target名稱.
Eclipse對ant提供了強大的支持.首先支持語法高亮/智能提示/大綱視圖.
在eclipse中選中構建文件,右鍵選擇」Run As」-」Ant Build」,並執行便可.