<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 92,  comments - 299,  trackbacks - 0

    1、Ant的用途
       用于生成Java項目。
       跨平臺方式執行文件操作。
       使用第三方Ant任務,編寫自定義Ant任務。
    2、Ant是什么
       Apache Ant是一個基于Java的生成工具。是Another Neat Tool的縮寫。生成工具在軟件開發中用來將源代碼和其他輸入文件轉換為可執行文件的形式。Ant與Make類似,但是具有跨平臺的特色。
    3、Ant生成文件剖析
       每個生成文件由單個的Project元素組成,Project元素又包含多個target元素。一個target是生成過程中已定義的一個步驟。他執行任意數量的操作。操作本身是由其他專用任務標簽執行的。頂級project元素包含一個default屬性,在Ant被調用而沒有指定目標時,這個屬性將指定要執行的目標。然后需要使用target元素來定義該目標本身。
      eg:
      <?xml version="1.0"?>
      <project default="init">
        <target name="init">
        </target>
      </project>
    3、添加描述
       Ant自己添加了description元素和description屬性。
    4、Ant中的屬性
       屬性一旦設置,就不可再改變。
       申明屬性的方法:
       <property name="metal" value="beryllium"/>
       使用屬性的方法:
       ${metal}
       eg:
       <property name="metal_database" value="${metal}.db"/>
       Ant自定義的屬性:
       ${user.home}、${ant.version}、${basedir}等等。
       Ant 的 location 屬性專門設計用于以平臺無關的方式包含文件系統路徑。您會像下面這樣使   用 location 來代替value:
       <property name="database-file" location="archive/databases/${metal}.db"/>
    5、定義依賴關系
       target元素的depends屬性確定依賴關系。eg: 
       <target name="compile" depends="init,preprocess"/>
       與多個target有依賴關系時,中間用‘,’分開
    6、Ant的運行
       Ant可以在集成開發環境下(IDE)運行,也可以在命令行運行。
       在命令運行的選項有:
       沒有參數時,默認尋找build.xml文件
       -buildfile(-f) filename 以filename文件作為Ant文件運行
       -D propertyName=value 覆蓋生成文件中的初始屬性設置。
    7、常用的任務標簽
       <javac srcdir="" classpath="" debug="" fork="" executable="filepath"/> debug、fork   可以取true/false。executable指定javac的目錄。eg:d:\sdk141\bin\javac。executable一     般于fork配合使用
       <jar destfile="package.jar" basedir="classes"/>
       這將創建一個名為 package.jar 的 JAR 文件,并把 classes 目錄中的所有文件添加到其中    (JAR 文件能夠包含任意類型的文件,而不只是類文件)。此處沒有指定清單文件,因此 Ant     將提供一個基本的清單文件。
       manifest 屬性允許指定一個用作該 JAR 文件的清單的文件。清單文件的內容還可以使用       manifest 任務在生成文件中指定。這個任務能夠像文件系統寫入一個清單文件,或者能夠實     際嵌套在 jar 之內,以便一次性地創建清單文件和 JAR 文件。 例如:
       <jar destfile="package.jar" basedir="classes">
          <manifest>
            <attribute name="Built-By" value="${user.name}"/>
            <attribute name="Main-class" value="package.Main"/>
          </manifest>
       </jar>
       <mkdir dir="${buildDir}"/>
       <tstamp/>
       <delete dir="${buildDir}"/>
       <copy file="src/Test.java" tofile="src/TestCopy.java"/>
       <move file="src/Test.java" tofile="src/TestCopy.java"/>
       <copy file="src/Test.java" todir="archive"/>
       <move file="src/Test.java" todir="archive"/>
       <zip destfile="output.zip" basedir="output"/>
       <gzip src="output.tar" zipfile="output.tar.gz"/>
       <unzip src="output.tar.gz" dest="extractDir"/>
       還可以包括 overwrite 屬性來控制覆蓋行為。默認設置是覆蓋與正在被提取的歸檔文件中的     條目相匹配的所有現有文件。相關的任務名稱是 untar、unjar、gunzip 和 bunzip2。
       <replace file="input.txt" token="old" value="new"/>
       token 屬性指定要查找的字符串,value 屬性指定一個新的字符串,查找到的標記字符串的所   有實例都被替換為這個新的字符串
    8、模式匹配
      <copy todir="archive">
        <fileset dir="src">
          <include name="*.java"/>
        </fileset>
      </copy>
      fileset 默認情況下包含指定 src 目錄下的所有文件,因此為了僅選擇 Java 文件,我們對模  式使用一個 include 元素。類似地,我們可以對另一個模式添加一個 exclude 元素,從而潛  在地排除include指定的匹配項。甚至可以指定多個include 和 exclude 元素;這樣將得到一  組文件和目錄,它們包含 include 模式的所有匹配項的并集,但排除了 exclude 模式的所有  匹配項。

    9、Ant 可用的核心選擇器的列表:

    size:這個選擇器用于根據文件的字節大小選擇文件(除非使用 units 屬性來指定了不同的單位)。when 屬性用于設置比較的性質(less、more 或者 equal),value 屬性定義每個文件將與之作比較的目標大小。

    contains:只有包含給定文本字符串(由text 屬性指定)的文件才匹配這個選擇器。默認情況下,查找操作是大小寫敏感的;添加casesensitive="no" 可以改變默認設置。

    filename:name 屬性指定文件名要與之匹配的模式。它本質上與 include 元素相同,以及與指定了negate="yes" 時的 exclude 元素相同。

    present:從當前目錄結構中選擇如下文件:它們與指定的 targetdir 目錄中的文件具有相同的名稱和相對目錄結構。

    depend:這個選擇器與 present 選擇器具有相同的效果,只不過匹配的文件被限制到相對于 targetdir 位置中的對應文件來說,最近已修改過的那些文件。

    date:這個選擇器基于其最后修改日期選擇文件。when 屬性指定作比較的性質是 before、after 還是 equal,datetime 屬性指定與之作比較的日期和時間,這個日期和時間具有給定的固定格式 MM/DD/YYYY HH:MM AM_or_PM。注意 Windows 平臺上有一個內置的 2 秒偏移,以允許底層文件系統的不精確性 —— 這可能導致匹配的文件數量超過預期。允許的回旋時間量可以使用 granularity 屬性來更改(以毫秒為單位來指定)。

    depth:這個選擇器檢查每個文件的目錄結構層次數目。min 和/或 max 屬性用于選擇具有想要的目錄層次數目的的文件。

    eg:
    <fileset dir="dir">
        <and>
            <contains text="hello"/>
            <size value="512" when="more"/>
        </and>
    </fileset>

    10、將生成文件鏈接起來
    可以使用 antfile 屬性,僅指定那些要使用的生成文件,Ant 將生成該生成文件中的默認目標。例如:<ant antfile="sub-build.xml"/>
    在父生成文件中定義的任何屬性默認將傳遞給子生成文件,雖然這可以通過指定 inheritAll="false"來避免。通過使用 property 元素來傳入顯式的屬性也是可以做到的 —— 即使將 inheritAll 設置為 false,這些屬性也仍然適用于子生成文件。這個功能很適合用于給子生成文件傳入參數。
    讓我們來考慮一個例子。下面是我們想要調用的一個生成文件:

    <?xml version="1.0"?>
    <project default="showMessage">
        <target name="showMessage">
            <echo message="Message=${message}"/>
        </target>
    </project>

    (我們在前面還沒有遇到過 echo 任務 —— 它簡單地輸出給定的消息。)

    下面是調用第一個生成文件的第二生成文件,它還給第一個生成文件傳入 message 屬性:

    <?xml version="1.0"?>
    <project default="callSub">
        <target name="callSub">
            <ant antfile="sub.xml" target="showMessage" inheritAll="false">
                <property name="message" value="Hello from parent build"/>
            </ant>
        </target>
    </project>

    11、使用 CVS 知識庫
    下面是從 CVS 知識庫提取模塊的一個例子生成文件:

    <?xml version="1.0"?>
    <project name="CVS Extract" default="extract" basedir=".">
    <property name="cvsRoot" value=":pserver:anonymous@dev.eclipse.org:/home/eclipse"/>
        <target name="extract">
            <cvs cvsRoot="${cvsRoot}"
                 package="org.eclipse.swt.examples"
                    dest="${basedir}"/>
        </target>
    </project>

    cvs 任務的主要屬性是 cvsRoot,它是對 CVS 知識庫的完整引用,包括連接方法和用戶詳細信息。這個參數的格式如下:

    [:method:][[user][:password]@]hostname[:[port]]/path/to/repository

    在上面的例子中,我們作為匿名用戶連接到 Eclipse 項目的中央知識庫。然后其他屬性指定了我們希望提取的模塊以及放置提取文件的目的地。提取是 CVS 任務的默認操作;其他操作可通過使用 command 屬性來指定。

    注意,為了利用 Ant 中的 cvs 任務,您需要在機器上安裝 cvs 命令,并使其從命令行可用。

    posted on 2005-07-28 11:04 coffee 閱讀(3691) 評論(4)  編輯  收藏

    FeedBack:
    # re: Ant文件的寫法---學習筆記
    2007-04-23 22:45 | JJ
    斑竹,想問一下,ant中的fork是什么屬性,起什么作用啊?  回復  更多評論
      
    # re: Ant文件的寫法---學習筆記
    2007-05-09 16:36 | 米湯加咖啡
    恩恩,真的好全,謝謝阿海.

    邊看邊做時候發現里面有個小問題.

    在"6、Ant的運行"提到"-D propertyName=value 覆蓋生成文件中的初始屬性設置",應該是"-DpropertyName=value 覆蓋生成文件中的初始屬性設置",當中不能有空格,不然會報錯.
      回復  更多評論
      
    # re: Ant文件的寫法---學習筆記
    2007-11-12 23:10 | wukaichun
    學習了一下.多謝(:~  回復  更多評論
      
    # re: Ant文件的寫法---學習筆記
    2008-12-08 13:12 | 2
    ant 中利用cvs做commit操作,如何操作呀?
      回復  更多評論
      

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    <2005年7月>
    262728293012
    3456789
    10111213141516
    17181920212223
    24252627282930
    31123456

    棱而無角,圓而有方,我永遠的追求。

    常用鏈接

    留言簿(22)

    隨筆分類(103)

    隨筆檔案(93)

    文章分類(3)

    相冊

    收藏夾

    java

    其它

    最新隨筆

    搜索

    •  

    積分與排名

    • 積分 - 78731
    • 排名 - 708

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 羞羞漫画在线成人漫画阅读免费| 国产亚洲美女精品久久久久狼| 亚洲伊人久久大香线蕉| 国产一级a毛一级a看免费视频| 久久精品亚洲乱码伦伦中文| 免费中文字幕视频| 亚洲欧洲日产国码一级毛片| 免费人成视频在线播放| 亚洲国产天堂久久久久久| 一级做α爱过程免费视频| 亚洲精品一级无码鲁丝片| 免费无码专区毛片高潮喷水| 国产国拍亚洲精品福利| 国精产品一区一区三区免费视频| 亚洲第一AAAAA片| 久久久久久精品免费免费自慰| 亚洲免费二区三区| 暖暖在线日本免费中文| 亚洲狠狠色丁香婷婷综合| 免费在线看片网站| 91成人免费福利网站在线| 亚洲成a人片77777老司机| 一本岛高清v不卡免费一三区| 色偷偷女男人的天堂亚洲网| 国产大片线上免费看| caoporm碰最新免费公开视频| 亚洲国语精品自产拍在线观看 | 久久久青草青青亚洲国产免观| 久久精品电影免费动漫| 亚洲成人福利在线| 免费人成年激情视频在线观看| 99视频免费在线观看| 亚洲综合校园春色| 亚洲乱码日产精品a级毛片久久| 国产在线一区二区综合免费视频| 亚洲另类视频在线观看| 亚洲免费一区二区| 国产成人免费网站| 伊人免费在线观看高清版| 亚洲中文字幕乱码熟女在线| 中文字幕亚洲无线码|