這個標簽尋找src目錄中以.java為擴展名的所有文件,并對它們調用javac編譯器,從而在相同的目錄中生成類文件。當然,將類文件放在一個單獨的目錄結構中通常會更清晰;可以通過添加destdir屬性來讓Ant做到這點。其他有用的屬性包括:classpath:等價于javac的-classpath選項。debug="true":指示編譯器應該帶調試信息編譯源文件。javac任務的一個重" />

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Ant tutorial(2)

系統 1523 0

編譯 Java 代碼的任務的編寫方式:
??????????????? <javac srcdir="src"/>
這個標簽尋找 src 目錄中以 .java 為擴展名的所有文件,并對它們調用 javac 編譯器,從而在相同的目錄中生成類文件。當然,將類文件放在一個單獨的目錄結構中通常會更清晰;可以通過添加 destdir 屬性來讓 Ant 做到這點。其他有用的屬性包括:

classpath :等價于 javac -classpath 選項。

debug="true" :指示編譯器應該帶調試信息編譯源文件。

javac 任務的一個重要特點在于,它僅編譯那些它認為需要編譯的源文件。如果某個類文件已經存在,并且對應的源文件自從該類文件生成以來還沒有改變過,那么該源文件就不會被重新編譯。 javac 任務的輸出顯示了實際被編譯的源文件的數目。編寫一個 clean 目標來從目標目錄移除生成的任何類文件是個很好的習慣。如果想要確保所有源文件都已編譯,就可以使用這個任務。這種行為刻畫了 Ant 的許多任務的特點:如果某個任務能夠確定所請求的操作不需要執行,那么該操作就會被跳過。

Ant javac 任務的默認行為是調用運行 Ant 本身的任何 JVM 的標準編譯器。然而,有時您可能想要單獨地調用編譯器 —— 例如當你希望指定編譯器的某些內存選項,或者需要使用一種不同級別的編譯器的時候。為實現這個目的,只需將 javac fork 屬性設置為 true ,比如像下面這樣:

<javac srcdir="src" fork="true"/>

如果想要指定一個不同的 javac 可執行文件,并向它傳遞一個最大內存設置,可以像下面這樣做:

??? <javac srcdir="src" fork="true" executable="d:\sdk141\bin\javac"

memoryMaximumSize="<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="128" unitname="m">128m</chmetcnv>"/>

在編譯 Java 源文件之后,結果類文件通常被打包到一個 JAR 文件中,這個文件類似 zip 歸檔文件。每個 JAR 文件都包含一個清單文件,它可以指定該 JAR 文件的屬性。

下面是 Ant jar 任務的一個簡單使用例子:

<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 >

在生成環境中使用當前時間和日期,以某種方式標記某個生成任務的輸出,以便記錄它是何時生成的,這經常是可取的。這可能涉及編輯一個文件,以便插入一個字符串來指定日期和時間,或將這個信息合并到 JAR zip 文件的文件名中。

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

?

這種需要是通過簡單但是非常有用的 tstamp 任務來解決的。這個任務通常在某次生成過程開始時調用,比如在一個 init 目標中。這個任務不需要屬性,許多情況下只需 <tstamp/> 就足夠了。

在調用 tstamp 任務之后,我們能夠根據日期命名該 JAR 文件,如下所示:

<jar destfile="package-${DSTAMP}.jar" basedir="classes"/>

因此,如果這個任務在 2006 3 8 日調用,該 JAR 文件將被命名為 package-20060308.jar

還可以配置 tstamp 任務來設置不同的屬性,應用一個當前時間之前或之后的時間偏移,或以不同的方式格式化該字符串。所有這些都是使用一個嵌套的 format 元素來完成的,如下所示:

< tstamp >
???
< format? property ="OFFSET_TIME"
???????????pattern
="HH:mm:ss"
???????????offset
="10" ?unit ="minute" />
</ tstamp >

上面的清單將 OFFSET_TIME 屬性設置為距離當前時間 10 分鐘之后的小時數、分鐘數和秒數。

用于定義格式字符串的字符與 java.text.SimpleDateFormat 類所定義的那些格式字符相同。

    
      

下面將把這些代碼片斷組合成一個完整的生成文件,它將編譯 src 目錄下的所有源代碼,將結果類文件放在 build 目錄下,然后把所有類文件打包到 dist 目錄中的一個 JAR 文件中。要自己試驗這個生成文件,您所需要的就是包含一個或多個 Java 源代碼文件的 src 目錄 —— 這個目錄可以包含從簡單的“ Hell World ”程序到來自某個現有項目的大量源文件的任何內容。如果需要向 Java classpath 添加 JAR 文件或其他任何內容,以便成功地編譯源代碼,您只需在 javac 任務中為其添加一個 classpath 屬性:

<? xml?version="1.0" ?>
< project? default ="dist" ?name ="Project?Argon" >
?????
< description > A?simple?Java?project </ description > ??

????
< property? name ="srcDir" ?location ="src" />
????
< property? name ="buildDir" ?location ="build" />
????
< property? name ="distDir" ?location ="dist" />

????
< target? name ="init" >
???????
< tstamp />
???????
< mkdir? dir ="${buildDir}" />
???????
< mkdir? dir ="${distDir}" />
????
</ target >

????
< target? name ="compile" ?depends ="init" >
???????
< javac? srcdir ="${srcDir}" ?destdir ="${buildDir}" />
????
</ target >

????
< target? name ="dist" ?depends ="compile" >
???????
< jar? destfile ="${distDir}/package-${DSTAMP}.jar" ?basedir ="${buildDir}" >
?????????
< manifest >
???????????
< attribute? name ="Built-By" ?value ="${user.name}" />
???????????
< attribute? name ="Main-Class" ?value ="package.Main" />
?????????
</ manifest >
???????
</ jar >
???????
< jar? destfile ="${distDir}/package-src-${DSTAMP}.jar" ?basedir ="${srcDir}" />
????
</ target >

????
< target? name ="clean" >
??????
< delete? dir ="${buildDir}" />
??????
< delete? dir ="${distDir}" />
????
</ target >
</ project >

下面是使用該文件執行的某次生成過程的示例輸出(您得到的輸出可能不一樣,具體取決于 src 目錄的內容):

Buildfile:?build.xml

init:
????[mkdir]?Created?dir:?E:\tutorial\javaexample\build
????[mkdir]?Created?dir:?E:\tutorial\javaexample\dist

compile:
????[javac]?Compiling?10?source?files?to?E:\tutorial\javaexample\build

dist:
??????[jar]?Building?jar:?E:\tutorial\javaexample\dist\package-20031217.jar
??????[jar]?Building?jar:?E:\tutorial\javaexample\dist\package-src-20031217.jar

BUILD?SUCCESSFUL
Total?time:?5?seconds

注意 JAR 文件是根據當前日期來命名的,并且為應用程序的主類設置了一個清單條目,以便主類能夠通過一個簡單的命令 java -jar package-20031217.jar 來直接運行。我們還創建了一個 JAR 文件,它僅包含項目的源代碼。

?

?

?

?

?

?

Ant tutorial(2)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久久久久99 | 久久久久久久99久久久毒国产 | 亚洲成人国产精品 | 久久久国产这里有的是精品 | 天天干天天射天天操 | 99免费在线视频 | 日本人69视频jizz免费看 | 高清中文字幕视频在线播 | 曰本还a大片免费无播放器 曰本黄色录像 | 欧美精品一区二区三区视频 | 四虎影视国产精品婷婷 | 四虎精品免费国产成人 | 亚洲欧美日韩高清在线看 | 国产成人精品免费视频大全办公室 | 久久精品国产精品亚洲婷婷 | 亚洲一区在线免费 | 中国一级特黄特级毛片 | 欧美一级毛片免费看 | 色综合久久久久综合99 | 日韩欧美一区二区在线观看 | 色综久久天天综合绕视看 | 狠狠操狠狠操狠狠操 | 亚洲日日做天天做日日谢 | 六月成人网 | 天天欧美| 成人毛片一区二区三区 | 在线亚洲一区二区 | 完整日本特级毛片 | 久久综合九色综合狠狠97 | 一区二区高清视频 | 欧美日韩生活片 | 一区二区三区免费视频网站 | 精品中文字幕久久久久久 | 久久国产一久久高清 | 狠狠色狠狠色88综合日日91 | 男人的天堂欧美精品色偷偷 | 四虎影视国产在线观看精品 | 精品久久久久久影院免费 | 成人亚洲欧美日韩中文字幕 | 国产99久久 | 欧美大片一区 |