首先來一個官方一點的解釋java
apache ant:是一個將軟件編譯、測試、部署等步驟聯繫在一塊兒加以自動化的一個工具,大多用於Java環境中的軟件開發。web
做用:1.能夠用ant編譯Java類,生成class文件apache
2.ant能夠自定義標籤和配置文件tomcat
3.ant能夠把相關層架構成包架構
4.ant能夠把整個項目生成web包,發佈到tomcatapp
ant的使用方法less
1.下載(這個是否是多餘說,下載個穩定版的哦)工具
2.配置環境變量:一共有三個須要配置測試
1.JAVA_HOME:指向JDK的安裝路徑(通常若是你安裝了JDK都已經配置好了吧,沒有配置的都是白癡麼)優化
2.ANT_HOME : 指向ANT的安裝路徑 好比E:/ant
3.PATH : %ANT_HOME%/bin
3.最最關鍵的定義生成文件(其實以前兩步完成就能夠運行ANT了)
生成文件:我理解生成文件應該就是指把java生成class的文件,ant會按照生成文件裏面定義的生成任務進行執行
怎麼使用生成文件:ant的默認生成文件爲build.xml(在命令行),要是想使用其餘的xml文件做爲生成文件,要將該文件的文件名做爲參數傳給ant(ant在命令行運 行時,應該確保是在生成文件所在目錄下輸入ant,而後經過-buildfile或-file或-f來指定生成文件 例如 ant -f demo.xml)
生成文件定義了一個項目的各個生成任務(target標籤來表示,每一個target標籤都表示一個生成任務),並定義生成任務間的依賴關係
生成文件的位置:通常會把生成文件放在項目頂層目錄中(他們說是爲了保持整潔和清晰)
一個項目大概是這個結構
project
|—src:存放源文件和各類配置文件的文件夾
|—classes:存放編譯後的class文件的文件夾
|—lib:存放第三方jar包的地方(看這霸氣的名字就知道了)
|—dist:存放項目打包,項目發佈文件的文件夾
|—build.xml
4.生成文件中的標籤(copy度娘,栗子是我本身買的=。=)
a.<project>標籤
每一個構建文件對應一個項目。<project>標籤時構建文件的根標籤。它能夠有多個內在屬性,就如代碼中所示,其各個屬性的含義分別以下。
(1) default表示默認的運行目標,這個屬性是必須的。
(2) basedir表示項目的基準目錄。
(3) name表示項目名。
(4) description表示項目的描述。
每一個構建文件都對應於一個項目,可是大型項目常常包含大量的子項目,每個子項目均可以有本身的構建文件。
b.<target>標籤(project的子標籤)
一個項目標籤下能夠有一個或多個target標籤。一個target標籤能夠依賴其餘的target標籤。
例如,有一個target用於編譯程序,另外一個target用於聲稱可執行文件。在生成可執行文件以前必須先編譯該文件,因策可執行文件的target依賴於編譯程序的target。 Target的全部屬性以下。
(1).name表示標明,這個屬性是必須的。
(2).depends表示依賴的目標。
(3)if表示僅當屬性設置時才執行。
(4)unless表示當屬性沒有設置時才執行。
(5)description表示項目的描述。
Ant的depends屬性指定了target的執行順序。Ant會依照depends屬性中target出現順序依次執行每一個target。
PS:我仍是舉個栗子吧
1.<target name="demoOne" depends="demoTwo"/>
這個的意思就是執行demoOne target這個生成任務以前,必須先執行demoTwo target,另外depends裏面能夠有多個target,按出現順序執行(這個就像是一 個方法要想執行,必須再上一個方法已經執行的基礎上同樣,一環扣一環)
2.<target name="demoOne" unless="demeTwo" />
這個意思是想要執行demoOne的前提是demoTwo沒有設置的時候才能夠(就像是while,只有前提知足沒有設置,才能夠執行)。
3.<target name="demoOne" if="demoTwo"/>
這個意思是想要執行demoOne的前提是demoTwo已經設置的時候才能夠(if,你懂得)。
c.<mkdir>標籤(target的子標籤)
該標籤用於建立一個目錄,它有一個屬性dir用來指定所建立的目錄名,其代碼以下:
<mkdir dir=」demo」/>也能夠<mkdir dir ="demo/demochild">
經過以上代碼就建立了一個目錄.
d.<jar>標籤(target的子標籤)
該標籤用來生成一個JAR文件,其屬性以下。
(1) destfile表示JAR文件名。
(2) basedir表示被歸檔的文件名。
(3) includes表示別歸檔的文件模式。
(4) exchudes表示被排除的文件模式。
PS:老闆再來一個栗子
<jar destfile="dist/demo.jar" basedir="project/classes">
這個的意思是建立一個jar包名字爲demo.jar,放在dist文件夾下面,被歸檔的文件爲classes(就像是一份與之對應的文件)
e.<javac標籤>(target的子標籤)
該標籤用於編譯一個或一組java文件,其屬性以下。
(1).srcdir表示源程序的目錄。
(2).destdir表示class文件的輸出目錄。
(3).include表示被編譯的文件的模式。
(4).excludes表示被排除的文件的模式。
(5).classpath表示所使用的類路徑。
(6).debug表示包含的調試信息。
(7).optimize表示是否使用優化。
(8).verbose 表示提供詳細的輸出信息。
(9).fileonerror表示當碰到錯誤就自動中止。
f.<java>標籤(target的子標籤)
該標籤用來執行編譯生成的.class文件,其屬性以下。
(1).classname 表示將執行的類名。
(2).jar表示包含該類的JAR文件名。
(3).classpath所表示用到的類路徑。
(4).fork表示在一個新的虛擬機中運行該類。
(5).failonerror表示當出現錯誤時自動中止。
(6).output 表示輸出文件。
(7).append表示追加或者覆蓋默認文件。
g.<delete>標籤(target的子標籤)
該標籤用於刪除一個文件或一組文件,其屬性以下。
(1)/file表示要刪除的文件。
(2).dir表示要刪除的目錄。
(3).includeEmptyDirs 表示指定是否要刪除空目錄,默認值是刪除。
(4).failonerror 表示指定當碰到錯誤是否中止,默認值是自動中止。
(5).verbose表示指定是否列出所刪除的文件,默認值爲不列出。
h.<copy>標籤(target的子標籤)
該標籤用於文件或文件集的拷貝,其屬性以下。
(1).file 表示源文件。
(2).tofile 表示目標文件。
(3).todir 表示目標目錄。
(4).overwrite 表示指定是否覆蓋目標文件,默認值是不覆蓋。
(5).includeEmptyDirs 表示制定是否拷貝空目錄,默認值爲拷貝。
(6).failonerror 表示指定如目標沒有發現是否自動中止,默認值是中止。
(7).verbose 表示制定是否顯示詳細信息,默認值不顯示。
i.<property>標籤(project的子標籤)
該標籤用於定義一個或多個屬性
1.name:指定須要設置的屬性名
2.value:指定須要設置的屬性值
3.resource:指定屬性文件袋的源名稱,Ant將負責從文件中讀取屬性名和屬性值
4.file:指定屬性文件的文件名,Ant將負責從文件中讀取屬性名和屬性值
5.url:指定屬性文件的URL地址,Ant將負責從屬性文件中讀取屬性名和屬性值‘
6.environment:用於指定系統環境變量的前綴,經過這種方式容許Ant訪問環境變量
7.classpathref:指定搜索屬性文件的文件和路徑集。
8.classpathref:指定搜索文件的文件和路徑集引用,只是引用。
栗子來嘍:
<peoperty name="demo" value ="demoValue"/>
定義名字爲demo的屬性,其值爲demoValue,若是須要獲取屬性值,則使用${demo}的形式。
5.Ant 的運行安裝好Ant而且配置好路徑以後,在命令行中切換到構建文件的目錄(xml所在目錄哦),輸入Ant命令就能夠運行Ant.若沒有指定任何參數,Ant會在當前目錄下查詢build.xml文件。若是找到了就用該文件做爲構建文件。若是使用了 –find 選項,Ant 就會在上級目錄中找構建文件,直至到達文件系統的根目錄。若是構建文件的名字不是build.xml ,則Ant運行的時候就可使用 –buildfile file,這裏file 指定了要使用的構建文件的名稱。