Ant 学习笔记
- http://ant.apache.org/? 下載zip包 ant,解壓到 某個盤,比如D:\apache-ant-1.9.4
- 配置環境變量??,bin加入path,測試是否成功,則表示配置成功。
- 初步使用?編寫簡單的build.xml(默認的,Ant會自動的在當前目錄下去尋找這個文件,如果找的就去構建,如果找不到就會提示:build.xml does not exist!
- <?xml version="1.0" encoding="utf-8"?>
- <project default="init">
- <target name="init">
- <mkdir dir="helloworld" />
- </target>
- </project> 命令行 運行ant ,然后就創建helloworld文件夾?
- Ant沒有定義自己的自定義語法;相反,它的生成文件是使用XML編寫的。存在Ant能夠理解的預定義XML元素,而且還可以定義新的元素來擴展Ant的功能。每個生成文件由單個project元素組成,該元素又包含一個或多個target元素。一個目標(target)是生成過程中已定義的一個步驟,它執行任意數量的操作,比如編譯一組源文件。并且這些操作本身是由其他專用的任務標簽執行的
- 頂級的project元素需要包含一個default屬性,如果在Ant被調用時沒有指定目標,這個屬性將指定要執行的目標。然后需要使用target元素來定義該目標本身。
- Ant中的屬性類似編程語言中的變量,它們都具有名稱和值。然而與通常的變量不同,一經設置,Ant中是屬性就不可更改;它們是不可變的,就像Java語言中的String對象。這起初看起來似乎很有限制性,但這樣是為了遵循Ant的簡單原則:畢竟,它是一個生成工具,而非一種編程語言。如果嘗試給某個現有的屬性賦予一個新的值,這不會看作是一個錯誤,但是該屬性仍然會保留其現有的值
- 定義與使用屬性
- <property name=”metal” value=”beryllium”/>
- 為了在生成文件的其他部分引用這個屬性,使用以下語法:
- ${metal}
- 例如,為了使用這樣一個值,它是另一個屬性的值的組成部分,將標簽寫成下面這樣
- <property name=”metal-database” value=”${metal}.db”/>
- 屬性經常用于引用文件系統上的文件或目錄,但是對于使用不同路徑分隔符(例如,/與|的平臺來說,這樣可能再跨越不同平臺時導致問題。Ant的location屬性專門設計用于以平臺無關的方式包含文件系統路徑。像下面這樣使用location替代value:
- <property name=”database-file” location=”archive/database/${metal}.db”/>
- 用于location屬性的路徑分隔字符將被轉換為當前平臺的正確格式;而且由于文件名是相對的,它被認為是相對于項目的基目錄。我們同樣可以容易地寫為下面這樣:
- <property name=”database-file” location=”archive\database\${metal}.db”/>
- 這個標簽的兩個版本都會在不同的平臺具有相同的行為
- <?xml version="1.0" encoding="utf-8"?>
- <project name="initProject" default="package" basedir=".">
- <property name="hello" value="hello123"/>
- <property name="welcome" value="welcome123"/>
- <target name="init">
- </target>
- <target name="preprocess" depends="init">
- <mkdir dir="${hello}"/>
- <mkdir dir="${welcome}"/>
- </target>
- <target name="compile" depends="init,preprocess"/>
- <target name="package" depends="compile"/>
- </project> 例子,可以生成兩個文件夾
- 默認情況下,Ant尋找一個名為build.xml的文件。當然,也可以使用其他名稱的生成文件,在那樣的情況下,你需要對Ant使用: ant -f test.xml ?(-f 是-file簡寫形式)
- -D<property>=<value> ? use value for given property ?
定義依賴關系:
生成一個項目一般需要許多步驟--例如首先要編譯源代碼,然后將它打包為Java歸檔文件(Java?Archive?File,JAR)。這其中許多步驟都具有清楚定義的順序--例如,在編譯器從源代碼生成類文件之前,您不能打包類文件。與順序指定target所不同的是,Ant采用一種更靈活的方法來定義依賴關系。每個目標的定義依據的是它能夠執行之前必須完成的其他所有目標。這是使用target元素的depends屬性來實現的
例如:
<target?name=”init”/>
<target?name=”preprocess”?depends=”init”/>
<target?name=”compile”?depends=”init,preprocess”/>
<target?name=”package”?depends=”compile”/>
這種方法允許您執行項目任何階段的生成過程;Ant會首先執行已定義的先決階段。在上面的例子中,如果讓Ant完成complie步驟,它將判斷出需要首先執行init和和preprocess這兩個目標。Init目標不依賴其他任何目標,因此它將首先被執行。然后Ant檢查preprogress?target,發現它依賴init目標;由于已經執行后者,Ant不會再次執行它,因此開始執行preprocess目標。最后可以執行compile任務本身。
注意目標出現在生成文件中的順序并不重要:執行順序是由depends屬性唯一確定的。
- Javac任務的一個重要的特點在于,它僅編譯那些它認為需要編譯的源文件。如果某個類文件已經存在,并且對應的源文件自從該類文件生成以來還沒改變過,那么該源文件就不會被重新編譯。Javac任務的輸出顯示了實際被編譯的源文件的數目。這種行為刻畫了Ant的許多任務的特點:如果某個任務能夠確定所請求的操作不需要執行,那么該操作就會被跳過。創建JAR文件在編譯Java源文件之后,結果類文件通常被打包到一個JAR文件中,這個文件類似zip歸檔文件,它可以指定該JAR文件的屬性下面是Ant中jar任務的一個簡單使用例子:<jar destfile=”package.jar” basedir=”classes”/>這將創建一個名為package.jar的jar文件,并把classes目錄中所有文件添加到其中(JARwe文件能夠包含任意類型的文件,而不只是類文件)。此處沒有指定清單文件,因此Ant將提供一個基本的清單文件Mainifest屬性允許指定一個用作JAR文件的清單的文件。清單文件的內容還可以使用mainifest任務在生成文件中指定。這個任務能夠向文件系統寫入一個清單文件,或者能夠實際嵌套在Jar之內,以便一次性地創建清單文件和JAR文件。
-在生成環境中使用當前時間和日期,以某種方式標記某個生成任務的輸出,以便記錄它是何時生成的,這經常是可取的。這可能涉及編輯一個文件,以便插入一個字符串來指定日期和時間,或將這個信息合并到JAR或者zip文件的文件名中-這種需要是通過簡單但是非常有用的tstamp任務來解決的。這個任務通常在某次生成過程開始時調用,比如在一個init目標中。這個任務不需要屬性,許多情況下只需要<tstamp/>就足夠了在調用tstamp任務之后,我們能夠根據日期命名該JAR文件,如下所示:<tstamp><format property="TODAY" pattern="yyyyMMdd" locale="cn" /></tstamp><jar destfile=”package-${DSTAMP}.jar” basedir=”classes”/> ?// output ?package-20150411.jar
基本操作創建和刪除目錄-最基本的文件系統操作之一就是創建目錄或文件夾。做這項工作的任務名稱為mkdir-<mkdir dir=”archive/metals/zinc”/>-mkdir任務的另一個有用的特性是它的如下能力:在父目錄還不存在時創建它們-如果目標目錄已經存在,mkdir任務不會發出錯誤消息,而只是假設它的工作已經完成,從而什么也不做刪除目錄-<delete dir=”archive/metals/zinc”/>-這將刪除指定的目錄連同它包含的所有文件以及子目錄。使用file屬性而不是dir屬性可以指定要刪除的單個文件
復制移動文件目錄<copy file=”src/Test.java” tofile=”src/TestCopy.java”/>還可以使用move來執行重命名操作而不是拷貝文件<move file=”src/Test.java” tofile=”src/TestCopy.java”/>另一個常用的文件系統操作是將文件復制或在移動到另一個目錄<copy file=”src/Test.java” todir=”archive”/><move file=”src/Test.java” tofile=”archive”/>默認情況下,Ant僅輸出它執行的移動和復制操作的摘要,包括諸如已移動或復制的文件的數量等信息。如果想看到更詳細的信息,包括涉及的文件名稱等,可以將verbose屬性設置為true
來自為知筆記(Wiz)
轉載于:https://www.cnblogs.com/liubo6/p/4491158.html
總結
- 上一篇: Catalina.stop: Conn
- 下一篇: js综合