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

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

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

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

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

    present:從當(dāng)前目錄結(jié)構(gòu)中選擇如下文件:它們與指定的 targetdir 目錄中的文件具有相同的名稱和相對目錄結(jié)構(gòu)。

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

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

    depth:這個選擇器檢查每個文件的目錄結(jié)構(gòu)層次數(shù)目。min 和/或 max 屬性用于選擇具有想要的目錄層次數(shù)目的的文件。

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

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

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

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

    下面是調(diào)用第一個生成文件的第二生成文件,它還給第一個生成文件傳入 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 任務(wù)的主要屬性是 cvsRoot,它是對 CVS 知識庫的完整引用,包括連接方法和用戶詳細(xì)信息。這個參數(shù)的格式如下:

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

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

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

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

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

    邊看邊做時候發(fā)現(xiàn)里面有個小問題.

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

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


    網(wǎng)站導(dǎo)航:
     
    <2005年7月>
    262728293012
    3456789
    10111213141516
    17181920212223
    24252627282930
    31123456

    棱而無角,圓而有方,我永遠(yuǎn)的追求。

    常用鏈接

    留言簿(22)

    隨筆分類(103)

    隨筆檔案(93)

    文章分類(3)

    相冊

    收藏夾

    java

    其它

    最新隨筆

    搜索

    •  

    積分與排名

    • 積分 - 78767
    • 排名 - 708

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲国产精品无码专区| 国产AV无码专区亚洲AV男同| a高清免费毛片久久| 亚洲av伊人久久综合密臀性色 | 91福利免费视频| 国产精品亚洲专区在线观看| 亚洲精品乱码久久久久久不卡| 无码人妻精品中文字幕免费 | 中文日韩亚洲欧美制服| 午夜亚洲国产成人不卡在线| 久久免费区一区二区三波多野| 亚洲色www永久网站| 国产亚洲成av片在线观看| 精品久久久久国产免费| 国产三级在线免费观看| 亚洲免费二区三区| 三上悠亚亚洲一区高清| 大地资源免费更新在线播放| 成人免费乱码大片A毛片| 亚洲色大成WWW亚洲女子| 亚洲电影一区二区| 亚洲国产小视频精品久久久三级| 最近中文字幕mv免费高清视频8| 免费精品国自产拍在线播放 | 天天综合亚洲色在线精品| 亚洲国产综合专区电影在线| 伊人久久亚洲综合影院| 曰批视频免费30分钟成人| 中文在线观看免费网站| MM1313亚洲精品无码久久| 亚洲成a人片毛片在线| 国产aⅴ无码专区亚洲av麻豆| 午夜时刻免费入口| 51精品视频免费国产专区| 久久久受www免费人成| 美女黄频免费网站| 国产精品久久亚洲不卡动漫| 在线电影你懂的亚洲| 亚洲乱码一区二区三区在线观看| 四虎影视永久免费观看地址| 97无码免费人妻超级碰碰碰碰 |