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

    歡迎訪問 生活随笔!

    生活随笔

    當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

    编程问答

    Ant 学习笔记

    發(fā)布時間:2025/4/16 编程问答 24 豆豆
    生活随笔 收集整理的這篇文章主要介紹了 Ant 学习笔记 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
    • http://ant.apache.org/? 下載zip包 ant,解壓到 某個盤,比如D:\apache-ant-1.9.4
    • 配置環(huán)境變量??,bin加入path,測試是否成功,則表示配置成功。
    • 初步使用?編寫簡單的build.xml(默認(rèn)的,Ant會自動的在當(dāng)前目錄下去尋找這個文件,如果找的就去構(gòu)建,如果找不到就會提示:build.xml does not exist!
    • <?xml version="1.0" encoding="utf-8"?>
    • <project default="init">
    • <target name="init">
    • <mkdir dir="helloworld" />
    • </target>
    • </project>
    • 命令行 運(yùn)行ant ,然后就創(chuàng)建helloworld文件夾?
    • Ant沒有定義自己的自定義語法;相反,它的生成文件是使用XML編寫的。存在Ant能夠理解的預(yù)定義XML元素,而且還可以定義新的元素來擴(kuò)展Ant的功能。每個生成文件由單個project元素組成,該元素又包含一個或多個target元素。一個目標(biāo)(target)是生成過程中已定義的一個步驟,它執(zhí)行任意數(shù)量的操作,比如編譯一組源文件。并且這些操作本身是由其他專用的任務(wù)標(biāo)簽執(zhí)行的
    • 頂級的project元素需要包含一個default屬性,如果在Ant被調(diào)用時沒有指定目標(biāo),這個屬性將指定要執(zhí)行的目標(biāo)。然后需要使用target元素來定義該目標(biāo)本身。
    • Ant中的屬性類似編程語言中的變量,它們都具有名稱和值。然而與通常的變量不同,一經(jīng)設(shè)置,Ant中是屬性就不可更改;它們是不可變的,就像Java語言中的String對象。這起初看起來似乎很有限制性,但這樣是為了遵循Ant的簡單原則:畢竟,它是一個生成工具,而非一種編程語言。如果嘗試給某個現(xiàn)有的屬性賦予一個新的值,這不會看作是一個錯誤,但是該屬性仍然會保留其現(xiàn)有的值
    • 定義與使用屬性
    • <property name=”metal” value=”beryllium”/>
    • 為了在生成文件的其他部分引用這個屬性,使用以下語法:
    • ${metal}
    • 例如,為了使用這樣一個值,它是另一個屬性的值的組成部分,將標(biāo)簽寫成下面這樣
    • <property name=”metal-database” value=”${metal}.db”/>
    • 屬性經(jīng)常用于引用文件系統(tǒng)上的文件或目錄,但是對于使用不同路徑分隔符(例如,/與|的平臺來說,這樣可能再跨越不同平臺時導(dǎo)致問題。Ant的location屬性專門設(shè)計(jì)用于以平臺無關(guān)的方式包含文件系統(tǒng)路徑。像下面這樣使用location替代value:
    • <property name=”database-file” location=”archive/database/${metal}.db”/>
    • 用于location屬性的路徑分隔字符將被轉(zhuǎn)換為當(dāng)前平臺的正確格式;而且由于文件名是相對的,它被認(rèn)為是相對于項(xiàng)目的基目錄。我們同樣可以容易地寫為下面這樣:
    • <property name=”database-file” location=”archive\database\${metal}.db”/>
    • 這個標(biāo)簽的兩個版本都會在不同的平臺具有相同的行為
    • 定義依賴關(guān)系:

      生成一個項(xiàng)目一般需要許多步驟--例如首先要編譯源代碼,然后將它打包為Java歸檔文件(Java?Archive?FileJAR)。這其中許多步驟都具有清楚定義的順序--例如,在編譯器從源代碼生成類文件之前,您不能打包類文件。與順序指定target所不同的是,Ant采用一種更靈活的方法來定義依賴關(guān)系。每個目標(biāo)的定義依據(jù)的是它能夠執(zhí)行之前必須完成的其他所有目標(biāo)。這是使用target元素的depends屬性來實(shí)現(xiàn)的

      例如:

      <target?name=”init”/>

      <target?name=”preprocess”?depends=”init”/>

      <target?name=”compile”?depends=”init,preprocess”/>

      <target?name=”package”?depends=”compile”/>

      這種方法允許您執(zhí)行項(xiàng)目任何階段的生成過程;Ant會首先執(zhí)行已定義的先決階段。在上面的例子中,如果讓Ant完成complie步驟,它將判斷出需要首先執(zhí)行init和和preprocess這兩個目標(biāo)。Init目標(biāo)不依賴其他任何目標(biāo),因此它將首先被執(zhí)行。然后Ant檢查preprogress?target,發(fā)現(xiàn)它依賴init目標(biāo);由于已經(jīng)執(zhí)行后者,Ant不會再次執(zhí)行它,因此開始執(zhí)行preprocess目標(biāo)。最后可以執(zhí)行compile任務(wù)本身。

      注意目標(biāo)出現(xiàn)在生成文件中的順序并不重要:執(zhí)行順序是由depends屬性唯一確定的。


    • <?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>
    • 例子,可以生成兩個文件夾
    • 默認(rèn)情況下,Ant尋找一個名為build.xml的文件。當(dāng)然,也可以使用其他名稱的生成文件,在那樣的情況下,你需要對Ant使用: ant -f test.xml ?(-f 是-file簡寫形式)
    • -D<property>=<value> ? use value for given property ?
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <project name="initProject" default="package" basedir=".">
  3. <property name="compile" value="complile"/>
  4. <property name="dist" value="dist"/>
  5. <target name="init">
  6. </target>
  7. <!--打包-->
  8. <target name="preprocess" depends="init">
  9. <mkdir dir="${compile}"/>
  10. <mkdir dir="${dist}"/>
  11. </target>
  12. <!--編譯-->
  13. <target name="compile" depends="init,preprocess">
  14. <javac srcdir="." destdir="${compile}"></javac>
  15. </target>
  16. <!--打包-->
  17. <target name="package" depends="compile">
  18. <jar destfile="${dist}/package.jar" basedir="${compile}">
  19. <!--生成manifest文件-->
  20. <manifest>
  21. <attribute name="Built-By" value="${user.name}"/>
  22. <attribute name="Main-Class" value="test"/>
  23. </manifest>
  24. </jar>
  25. </target>
  26. </project>

    • Javac任務(wù)的一個重要的特點(diǎn)在于,它僅編譯那些它認(rèn)為需要編譯的源文件。如果某個類文件已經(jīng)存在,并且對應(yīng)的源文件自從該類文件生成以來還沒改變過,那么該源文件就不會被重新編譯。Javac任務(wù)的輸出顯示了實(shí)際被編譯的源文件的數(shù)目。這種行為刻畫了Ant的許多任務(wù)的特點(diǎn):如果某個任務(wù)能夠確定所請求的操作不需要執(zhí)行,那么該操作就會被跳過。創(chuàng)建JAR文件在編譯Java源文件之后,結(jié)果類文件通常被打包到一個JAR文件中,這個文件類似zip歸檔文件,它可以指定該JAR文件的屬性下面是Ant中jar任務(wù)的一個簡單使用例子:<jar destfile=”package.jar” basedir=”classes”/>這將創(chuàng)建一個名為package.jar的jar文件,并把classes目錄中所有文件添加到其中(JARwe文件能夠包含任意類型的文件,而不只是類文件)。此處沒有指定清單文件,因此Ant將提供一個基本的清單文件Mainifest屬性允許指定一個用作JAR文件的清單的文件。清單文件的內(nèi)容還可以使用mainifest任務(wù)在生成文件中指定。這個任務(wù)能夠向文件系統(tǒng)寫入一個清單文件,或者能夠?qū)嶋H嵌套在Jar之內(nèi),以便一次性地創(chuàng)建清單文件和JAR文件。
      -在生成環(huán)境中使用當(dāng)前時間和日期,以某種方式標(biāo)記某個生成任務(wù)的輸出,以便記錄它是何時生成的,這經(jīng)常是可取的。這可能涉及編輯一個文件,以便插入一個字符串來指定日期和時間,或?qū)⑦@個信息合并到JAR或者zip文件的文件名中-這種需要是通過簡單但是非常有用的tstamp任務(wù)來解決的。這個任務(wù)通常在某次生成過程開始時調(diào)用,比如在一個init目標(biāo)中。這個任務(wù)不需要屬性,許多情況下只需要<tstamp/>就足夠了在調(diào)用tstamp任務(wù)之后,我們能夠根據(jù)日期命名該JAR文件,如下所示:<tstamp><format property="TODAY" pattern="yyyyMMdd" locale="cn" /></tstamp><jar destfile=”package-${DSTAMP}.jar” basedir=”classes”/> ?// output ?package-20150411.jar

      基本操作創(chuàng)建和刪除目錄-最基本的文件系統(tǒng)操作之一就是創(chuàng)建目錄或文件夾。做這項(xiàng)工作的任務(wù)名稱為mkdir-<mkdir dir=”archive/metals/zinc”/>-mkdir任務(wù)的另一個有用的特性是它的如下能力:在父目錄還不存在時創(chuàng)建它們-如果目標(biāo)目錄已經(jīng)存在,mkdir任務(wù)不會發(fā)出錯誤消息,而只是假設(shè)它的工作已經(jīng)完成,從而什么也不做刪除目錄-<delete dir=”archive/metals/zinc”/>-這將刪除指定的目錄連同它包含的所有文件以及子目錄。使用file屬性而不是dir屬性可以指定要刪除的單個文件

      復(fù)制移動文件目錄<copy file=”src/Test.java” tofile=”src/TestCopy.java”/>還可以使用move來執(zhí)行重命名操作而不是拷貝文件<move file=”src/Test.java” tofile=”src/TestCopy.java”/>另一個常用的文件系統(tǒng)操作是將文件復(fù)制或在移動到另一個目錄<copy file=”src/Test.java” todir=”archive”/><move file=”src/Test.java” tofile=”archive”/>默認(rèn)情況下,Ant僅輸出它執(zhí)行的移動和復(fù)制操作的摘要,包括諸如已移動或復(fù)制的文件的數(shù)量等信息。如果想看到更詳細(xì)的信息,包括涉及的文件名稱等,可以將verbose屬性設(shè)置為true








    來自為知筆記(Wiz)

    轉(zhuǎn)載于:https://www.cnblogs.com/liubo6/p/4491158.html

    總結(jié)

    以上是生活随笔為你收集整理的Ant 学习笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。