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

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

Ant tutorial(2)

系統(tǒng) 1815 0

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

classpath :等價于 javac -classpath 選項。

debug="true" :指示編譯器應(yīng)該帶調(diào)試信息編譯源文件。

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

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

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

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

??? <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 源文件之后,結(jié)果類文件通常被打包到一個 JAR 文件中,這個文件類似 zip 歸檔文件。每個 JAR 文件都包含一個清單文件,它可以指定該 JAR 文件的屬性。

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

<jar destfile="package.jar" basedir="classes"/>

這將創(chuàng)建一個名為 package.jar JAR 文件,并把 classes 目錄中的所有文件添加到其中( JAR 文件能夠包含任意類型的文件,而不只是類文件)。此處沒有指定清單文件,因此 Ant 將提供一個基本的清單文件。

manifest 屬性允許指定一個用作該 JAR 文件的清單的文件。清單文件的內(nèi)容還可以使用 manifest 任務(wù)在生成文件中指定。這個任務(wù)能夠像文件系統(tǒng)寫入一個清單文件,或者能夠?qū)嶋H嵌套在 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 >

在生成環(huán)境中使用當(dāng)前時間和日期,以某種方式標記某個生成任務(wù)的輸出,以便記錄它是何時生成的,這經(jīng)常是可取的。這可能涉及編輯一個文件,以便插入一個字符串來指定日期和時間,或?qū)⑦@個信息合并到 JAR zip 文件的文件名中。

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

?

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

在調(diào)用 tstamp 任務(wù)之后,我們能夠根據(jù)日期命名該 JAR 文件,如下所示:

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

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

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

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

上面的清單將 OFFSET_TIME 屬性設(shè)置為距離當(dāng)前時間 10 分鐘之后的小時數(shù)、分鐘數(shù)和秒數(shù)。

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

    
      

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

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

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 文件是根據(jù)當(dāng)前日期來命名的,并且為應(yīng)用程序的主類設(shè)置了一個清單條目,以便主類能夠通過一個簡單的命令 java -jar package-20031217.jar 來直接運行。我們還創(chuàng)建了一個 JAR 文件,它僅包含項目的源代碼。

?

?

?

?

?

?

Ant tutorial(2)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久这里只有精品首页 | 国产精品视频免费播放 | 国产边打电话边被躁视频 | 2021久久精品99精品久久 | 成人国产在线视频 | 九一毛片| 亚洲福利一区二区 | 伊人网伊人 | 99热这就是里面只有精品 | 啪啪免费网站入口链接 | 成人在色线视频在线观看免费大全 | 一级特黄aaa大片免费看 | 欧美一级视频在线观看 | 亚洲一区二区三区在线 | 3d动漫免费一区二区三区 | 免费的拍拍视频在线观看 | 五月色婷婷琪琪综合伊人 | 乱人伦中文字幕在线看 | 久草国产在线 | 国产原创精品 | 天天操天天干天天爽 | 91精选国产 | 九九99九九精彩 | 国产成人青草视频 | 亚洲乱人伦在线 | 久久99精品久久久久久噜噜丰满 | 欧美高清成人 | 亚洲国产精品日韩一线满 | 久久99热久久精品 | 快射视频欧美 | 亚洲国产99在线精品一区69堂 | 免费黄色小视频在线观看 | 久久天天躁狠狠躁夜夜不卡 | 99精品国产在这里白浆 | 一级欧美视频 | 神马老子不卡视频在线 | 一级毛片片| 九九精品在线 | 免费 黄 色 人成 视频 | 亚洲综合另类 | 精品久久香蕉国产线看观看亚洲 |