日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Apache Ant自动化脚本

發(fā)布時間:2025/7/14 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Apache Ant自动化脚本 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

http://blog.csdn.net/yubo_725/article/details/52326746

一、什么是Ant

以下介紹來自百度百科: Apache Ant,是一個將軟件編譯、測試、部署等步驟聯(lián)系在一起加以自動化的一個工具,大多用于Java環(huán)境中的軟件開發(fā)。由Apache軟件基金會所提供。 我們在使用Eclipse開發(fā)Android應用時,Eclipse使用的項目構建工具就是Ant。 用戶群:大多數(shù)的Java設計都被用于管理大量信息流,例如紐約州就使用Apache Ant去管理美國最大的青年計劃,每天可以實時更新超過25萬學生的記錄。
只要使用過Linux系統(tǒng)的讀者,應該知道 make這個命令。當編譯Linux內核及一些軟件的源程序時,經常要用這個命令。Make命令其實就 是一個項目管理工具,而Ant所實現(xiàn)功能與此類似。像make,gnumake和nmake這些編譯工具都有 一定的缺陷,但是Ant卻克服了這些工具的缺陷。最初Ant開發(fā)者在開發(fā)跨平臺的應用時,同樣也 是基于這些缺陷對Ant做了更好的設計。

二、Ant的優(yōu)點

Ant是Apache軟件基金會JAKARTA目錄中的一個子項目,它有以下的優(yōu)點: 跨平臺性。Ant是純Java語言編寫的,所以具有很好的跨平臺性。 操作簡單。Ant是由一個內置任務和可選任務組成的。Ant運行時需要一個XML文件(構建文件)。 Ant通過調用target樹,就可以執(zhí)行各種task。每個task實現(xiàn)了特定接口對象。由于Ant構建文件 是XML格式的文件,所以很容易維護和書寫,而且結構很清晰。Ant可以集成到開發(fā)環(huán)境中。由于Ant的跨平臺性和操作簡單的特點,它很容易集成到一些開發(fā)環(huán) 境中去。

三、Ant的基本使用方法

下面介紹Ant的基本使用方法: 1、首先需要從官網下載apache ant,地址為:http://ant.apache.org/bindownload.cgi 2、下載后的壓縮文件直接解壓后放到硬盤的目錄下就行,然后是配置Ant的環(huán)境變量,因為我們需要在命令行下使用ant命令,所以需要將ant的目錄加入path環(huán)境變量中,步驟如下(windows10系統(tǒng)): (1)鼠標右擊桌面“此電腦”,選擇屬性,然后在出現(xiàn)的窗口左側選擇“高級系統(tǒng)設置”,在彈出的窗口中選擇“環(huán)境變量” (2)在環(huán)境變量配置窗口中的“用戶變量”中新增一個變量名為ANT_HOME,值為Ant解壓后的目錄,如下圖所示: 然后在“用戶變量”下找PATH變量,如果沒有就新增一個PATH變量,如果有就直接在PATH變量中加入新的值,值為“%ANT_HOME%\bin” 經過上面2步就配置好了Ant的環(huán)境變量了,cmd中執(zhí)行ant -version命令后,如下圖所示則表示配置成功: 3、開始使用Ant。 Ant的核心就是配置文件build.xml,在build.xml文件中配置相關的任務后,使用ant命令即可自動執(zhí)行,所以我們需要掌握ant的相關配置,這里先在桌面新建一個目錄TestAnt,然后進入該目錄,新建一個build.xml文件,并加入如下內容: [html]?view plaincopy print?
  • <?xml?version="1.0"?>??
  • <project?name="HelloWorld"?default="test"?basedir="">??
  • ????<target?name="test">??
  • ????????<echo?message="test?echo?messsage,?basedir=${basedir}"?/>??
  • ????</target>??
  • </project>??
  • 在命令行下我們進入上面build.xml所在的目錄,然后執(zhí)行ant命令,會出現(xiàn)如下圖所示的結果: 下面就來解釋上面的build.xml文件的配置: (1)build.xml需要遵循一定的格式,這樣ant命令才能正確執(zhí)行,一個build.xml文件是以<project>標簽為根節(jié)點的,<project>節(jié)點中可以指定name屬性,表示項目的名稱,basedir代表項目的根目錄,default表示項目的默認任務名,這里的default屬性值為test,則執(zhí)行ant命令時會找default對應的target去執(zhí)行(如果ant命令沒有指定任務名的話)。 (2)<project>標簽中定義了一個<target>標簽,該標簽表示的就是一個任務,<target>標簽中的name屬性表示任務名,我們可以在命令行下直接使用ant + 任務名來執(zhí)行某個特定的任務,例如上面的例子中,我們可以使用ant test命令去執(zhí)行name值為test的target任務,由于我們在<project>標簽中配置了default屬性為test,所以在命令行下只需要執(zhí)行ant命令就可以運行test任務了。 (3)<echo>標簽表示在命令行下輸出,類似于java中的System.out.println(),在<echo>標簽中配置message屬性后即可在命令行下打印該屬性的值。如上圖中顯示的[echo],即為我們配置的message屬性的值。 (4)使用${}可以獲取某個變量的值,花括號中為變量名,如上圖中打印出的C:\Users\yubo7\Desktop\TestAnt,即為basedir的值,由于在<project>標簽中我們給basedir屬性的值為空,所以basedir的值默認為build.xml所在的路徑。 上面的例子是一個最基本的build.xml文件的結構,build.xml文件還有很多配置項,下面舉例幾個配置項: <property>標簽,用于聲明鍵值對: [html]?view plaincopy print?
  • <?xml?version="1.0"?>??
  • <project?name="HelloWorld"?default="test"?basedir="">??
  • ????<target?name="test-property">??
  • ????????<property?name="name"?value="zhangsan"?/>??
  • ????????<property?name="age"?value="25"?/>??
  • ????????<echo?message="this?is?target?test2."?/>??
  • ????????<echo?message="java?version:?${ant.java.version}"?/>??
  • ????????<echo?message="project?name:?${ant.project.name}"?/>??
  • ????????<echo?message="ant?file:?${ant.file}"?/>??
  • ????????<echo?message="name?=?${name},?age?=?${age}"?/>??
  • ????</target>??
  • </project>??
  • 執(zhí)行ant test-property命令后,結果如下圖:
    <property>標簽用于聲明一個屬性,其中name為屬性名,value為屬性值,訪問屬性值時使用${屬性名}。 <copty>標簽,用于文件拷貝: [html]?view plaincopy print?
  • <?xml?version="1.0"?>??
  • <project?name="HelloWorld"?default="test"?basedir="">??
  • ????<target?name="test-copy">??
  • ????????<copy?file="test.txt"?tofile="build/test.txt"?/>??
  • ????</target>??
  • </project>??
  • 執(zhí)行ant test-copy命令后,結果如下圖所示:
    <copy>標簽表示文件或文件夾的拷貝,上面的配置中,file屬性表示要拷貝的文件路徑,tofile屬性表示要拷貝的目的文件路徑。如果待拷貝的文件不存在,則命令執(zhí)行會失敗,如果目的文件路徑不存在,則命令執(zhí)行時會自動創(chuàng)建目錄。如果是要拷貝整個目錄,需要下面的配置: [html]?view plaincopy print?
  • <?xml?version="1.0"?>??
  • <project?name="HelloWorld"?default="test"?basedir="">??
  • ????<target?name="test-copy-dir">??
  • ????????<copy?todir="build/dest_dir">??
  • ????????????<fileset?dir="origin_dir"?/>??
  • ????????</copy>??
  • ????</target>??
  • </project>??
  • 執(zhí)行ant test-copy-dir命令后,結果如下圖所示: 和單個文件的拷貝類似,如果待拷貝的目錄不存在,則命令執(zhí)行會失敗,如果目的路徑不存在,則命令執(zhí)行時會自動創(chuàng)建目錄。 <delete>標簽,用于文件或文件夾的刪除:
    [html]?view plaincopy print?
  • <?xml?version="1.0"?>??
  • <project?name="HelloWorld"?default="test"?basedir="">??
  • ????<!--?刪除單個文件?-->??
  • ????<target?name="test-del-file">??
  • ????????<delete?file="test.txt"?/>??
  • ????</target>??
  • ??
  • ????<!--?刪除整個目錄?-->??
  • ????<target?name="test-del-dir">??
  • ????????<delete?dir="origin_dir"?/>??
  • ????</target>??
  • </project>??
  • 執(zhí)行ant test-del-file和ant test-del-dir命令后,結果如下圖所示:
    <mkdir>標簽,用于目錄的創(chuàng)建: [html]?view plaincopy print?
  • <?xml?version="1.0"?>??
  • <project?name="HelloWorld"?default="test"?basedir="">??
  • ????<target?name="test-mkdir">??
  • ????????<mkdir?dir="test"?/>??
  • ????</target>??
  • </project>??
  • 執(zhí)行ant test-mkdir命令后,結果如下圖:
    執(zhí)行成功后在項目的目錄下出現(xiàn)了test目錄。 上面的幾種是ant操作文件的基本用法,但是ant的用法不僅僅只有這么簡單而已,ant還可以編譯java文件,用法如下: <javac>標簽,用于將.java文件編譯成.class文件: [html]?view plaincopy print?
  • <?xml?version="1.0"?>??
  • <project?name="HelloWorld"?default="test"?basedir="">??
  • ????<target?name="test-compile">??
  • ????????<javac?srcdir="src"?destdir="build/classes/"?/>??
  • ????</target>??
  • </project>??
  • srcdir指定了java源文件所在的路徑,destdir指定的是編譯后的class文件存放的路徑,這里做一個簡單的測試,我們在src目錄下新建一個Test.java文件,內容為如下代碼: [java]?view plaincopy print?
  • public?class?Test?{??
  • ????public?static?void?main(String[]?args)?{??
  • ????????System.out.println("HelloWorld!");??
  • ????}??
  • }??
  • 然后執(zhí)行ant test-compile命令,結果如下圖:
    第一次執(zhí)行ant test-compile命令時,由于destdir目錄不存在,所以編譯不成功,在創(chuàng)建了build/classes/目錄后再次執(zhí)行ant test-compile,命令執(zhí)行成功,并且在build/classes/目錄下出現(xiàn)了Test.class文件。
    ant能編譯java文件,自然也能運行java程序,用法如下: <java>標簽,用于執(zhí)行.class文件: [html]?view plaincopy print?
  • <?xml?version="1.0"?>??
  • <project?name="HelloWorld"?default="test"?basedir="">??
  • ????<target?name="test-run-java">??
  • ????????<java?classname="Test">??
  • ????????????<classpath>??
  • ????????????????<pathelement?path="build/classes"?/>??
  • ????????????</classpath>??
  • ????????</java>??
  • ????</target>??
  • </project>??
  • <java>標簽中的classname屬性,指定了要執(zhí)行的main class名,<classpath>標簽中的<pathelement>標簽,指定了class文件的路徑。 執(zhí)行ant test-run-java命令后,結果如下圖:
    可以看到控制臺中打印了HelloWorld!,和我們在代碼中打印的一樣,證明這里執(zhí)行了java代碼。 <jar>標簽,用于將java程序打包成jar文件: [html]?view plaincopy print?
  • <?xml?version="1.0"?>??
  • <project?name="add"?default="jar">??
  • ????<target?name="jar">??
  • ????????<jar?destfile="add.jar"?basedir="build/classes/">??
  • ????????????<manifest>??
  • ????????????????<attribute?name="Main-class"?value="Add"?/>??
  • ????????????</manifest>??
  • ????????</jar>??
  • ????</target>??
  • </project>??
  • <jar>標簽中的destfile屬性表示要生成的jar文件,basedir指定class文件的路徑,<manifest>標簽指定了jar包中的MANIFEST.MF文件中的屬性,里面配置Main-class,即主class名稱為"Add"。 任務依賴: 使用ant執(zhí)行任務時,我們肯定不會是一個個的執(zhí)行,有時候會通過一次命令執(zhí)行多個任務,比如下面的過程: 新建目錄->移動文件到該目錄->刪除原來的文件 這個過程其實是3個獨立的任務,為了一次執(zhí)行這3個任務,需要用到<target>標簽中的depends屬性,首先上代碼: [html]?view plaincopy print?
  • <?xml?version="1.0"?>??
  • <project?name="Test"?default="delete-file">??
  • ????<!--創(chuàng)建目錄-->??
  • ????<target?name="mkdir">??
  • ????????<mkdir?dir="build/dest"?/>??
  • ????</target>??
  • ??
  • ????<!--拷貝文件-->??
  • ????<target?name="copy-file"?depends="mkdir">??
  • ????????<copy?file="test.txt"?tofile="build/dest/test.txt"?/>??
  • ????</target>??
  • ??
  • ????<!--刪除文件-->??
  • ????<target?name="delete-file"?depends="copy-file">??
  • ????????<delete?file="test.txt"?/>??
  • ????</target>??
  • </project>??
  • 上面的配置文件中有三個任務,其中copy-file任務和delete-file任務中都含有depends屬性,該屬性表示執(zhí)行<target>中的任務時,要依賴depends中指定的任務(depends中指定的任務會先執(zhí)行),depends屬性值就是一個任務名,所以上面的配置文件表示:執(zhí)行delete-file任務時需要依賴copy-file任務,而執(zhí)行copy-file任務時需要依賴mkdir任務,<project>標簽中的default值為delete-file,則我們執(zhí)行ant命令時,會找到delete-file任務,但是這個任務又依賴別的任務,則被依賴的任務會先執(zhí)行,所以上面的配置文件執(zhí)行的順序為:mkdir-->copy-file-->delete-file。 更多Ant的用法可以參考官方文檔:http://ant.apache.org/manual/index.html 以上就是ant的基本用法,下一篇中會記錄Eclipse使用ant構建項目時,執(zhí)行任務的過程。

    轉載于:https://www.cnblogs.com/xlhan/p/7145686.html

    總結

    以上是生活随笔為你收集整理的Apache Ant自动化脚本的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。