程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> ant應用指南具體入門教程

ant應用指南具體入門教程

編輯:關於JAVA

ant應用指南具體入門教程。本站提示廣大學習愛好者:(ant應用指南具體入門教程)文章只能為提供參考,不一定能成為您想要的結果。以下是ant應用指南具體入門教程正文


1、概述

ant 是一個將軟件編譯、測試、安排等步調接洽在一路加以主動化的一個對象,年夜多用於Java情況中的軟件開辟。在現實軟件開辟中,有許多處所可以用到ant。

開辟情況:

System:Windows
JDK:1.6+
IDE:eclipse
ant:1.9.1

2、長處

ant 是Apache軟件基金會JAKARTA目次中的一個子項目,它有以下的長處:
1、跨平台性:Ant是純Java說話編寫的,所以具有很好的跨平台性。
2、操作簡略:Ant是由一個內置義務和可選義務構成的,用ant義務就像是在dos中寫敕令行一樣。Ant運轉時須要一個XML文件(構建文件)。 Ant經由過程挪用target樹,便可以履行各類task。每一個task完成了特定接口對象。
3、保護簡略、可讀性好、集成簡略:因為Ant構建文件 時XML格局的文件,所以很輕易保護和書寫,並且構造很清楚。Ant可以集成到開辟情況中。因為Ant的跨平台性和操作簡略的特色,它很輕易集成到一些開辟情況中去。

3、裝置和設置裝備擺設

1、下載ant,http://mirror.esocc.com/apache//ant/binaries/apache-ant-1.9.1-bin.zip

2、解壓zip緊縮包,將緊縮包放置你要放置的目次。我這裡放置在D:\apache-ant-1.9.1,目次構造以下:

bin是ant的法式運轉進口,假如沒有設置裝備擺設ANT_HOME的情形下,可以經由過程bin目次中的bat法式停止運轉build義務。

如:在cmd中運轉ant.bat便可以履行法式,固然你選摘要以後目次中存在一個build.xml(build.xml是默許的ant履行文件,固然你可以指定其他文件)

etc目次中寄存的都是一些xsl的輸入模板,創立一個增強的導出各類義務的XML輸入,使你的build文件解脫過時的正告

lib目次中寄存的是ant法式須要依附的jar包

manual目次是ant法式的贊助文檔

3、在我的電腦 –> 右鍵屬性 –> 高等體系設置裝備擺設 -> 情況變量 中設置裝備擺設ant

新建體系變量 ANT_HOME = D:\apache-ant-1.9.1

如許情況變量就設置裝備擺設好了,但條件你須要設置裝備擺設jdk的情況變量。假如你沒有設置裝備擺設jdk的情況變量,那末請你先設置裝備擺設好jdk變量。jdk情況設置裝備擺設辦法以下:

(1),裝置JDk到其默許目次:C:\Program Files\Java\jdk1.5.0_05 (沒有jdk去官方下載一個)
C:\Program Files\Java\jdk1.5.0
感化:告知體系JVM在甚麼處所

(2),右擊我的電腦,選屬性,高等,情況變量
(3),在體系變量欄點新建,湧現新建體系變量對話框,在變量名中填上JAVA_HOME ,變量值:C:\Program Files\Java\jdk1.5.0_05
(4),肯定後在體系變量(S)欄再新建一個情況變量CLASSPATH,變量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar(開首的dot和;不克不及少)
(5),肯定後在體系變量(S)欄查找並選中變量為Path的選項,點編纂在變量值(V)的末尾添加:
%JAVA_HOME%\bin    

假如沒有找到PATH變量,本身新建一個!
假如你不想每次運轉都要cmd到class地點目次然後履行java敕令,可以把一切的class文件放到同一的目次組織下,然後將此目次也追加到CLASSPATH下。

測試代碼以下:

public class Test {
    public static void main(String[] args) {
              System.out.println("Hello World!");
    }
}

用記事本編纂後存為Test.java(文件名與類名雷同)文件,翻開敕令行窗口,
cd到文件地點目次下:

javac Test.java                       //編譯敕令
java Test                                //履行法式

假如輸入為:Hello World!       OK,設置裝備擺設終了,不然,從新檢討。

4、測試ant

在啟動,運轉cmd的dos窗口中輸出ant,如圖:

假如湧現這個,那末祝賀你裝置勝利了!不然就掉敗了,檢討下後面的步調有無毛病。下面敕令會履行ant法式,ant默許履行build.xml中的義務,這裡在Administrator目次中沒有這個文件。

假如裝置掉敗,你看看能否存在一些情形:

1、沒有設置裝備擺設JAVA_HOME 或設置裝備擺設毛病,而且JAVA_HOME\bin\java.exe存在

2、沒有設置裝備擺設ANT_HOEM 或設置裝備擺設毛病,而且ANT_HOME\bin\ant.bat存在

3、檢討你的情況變量的path變量中,有木有設置裝備擺設...;%ANT_HOME%\bin;...

%PATH%=...maybe-other-entries...;%ANT_HOME%\bin;...maybe-other-entries...

5、ant的運轉時情況

ant在運轉敕令的時刻,有時刻會湧現一些公園的jar庫。這些庫會存在於每一個ant工程中,那末這個時刻我們可以把這個jar包放到ant_home\lib目次中作為全局的庫應用。

假如你不想“淨化”原始的ant法式,那末你可以把jar包放在以後windows用戶的目次下,詳細地位應當是${user.home}/.ant/lib 下。沒有以上目次可以手動樹立。

假如你只是暫時要添加lib,又不想把lib添加到以後ant工程中。你可以在運轉ant法式的時刻指定依附的lib參數。

同時,你還可以在以後build工程的classpath目次中添加你的工程依附jar包。

6、ant敕令

語法元素解釋以下:
-help
顯示描寫ant 敕令及其選項的贊助信息
-projecthelp
顯示包括在構建文件中的、一切用戶編寫的贊助文檔。即為各個<target>中description 屬性的文本,和包括在<description>元素中的任何文本。將有description 屬性的目的列為主目的(Main target),沒有此屬性的目的則列為子目的(Subtarget)。
-version
請求ant 顯示其版本信息,然撤退退卻出。
-quiet
克制並不是由構建文件中的echo 義務所發生的年夜多半新聞。
-verbose
顯示構建進程中每一個操作的具體新聞。此選項與-debug 選項只能選其一。
-debug
顯示Ant 和義務開辟人員曾經標記為調試新聞的新聞。此選項與-verbose 只能選其一。
-emacs
對日記新聞停止格局化,使它們可以或許很輕易地由Emacs 的shell 形式(shellmode)所解析;也就是說,打印義務事宜,但其實不縮排,在其之前也沒有[taskname]。
-logfile filename
將日記輸入重定向到指定文件。
-logger classname
指定一個類來處置Ant 的日記記載。所指定的類必需完成了org.apache.tools.ant.BuildLogger 接口。
-listener classname
為Ant 聲明一個監聽類,並增長到其監聽者列表中。在Ant與IDE或其他Java法式集成時,此選項異常有效。可以浏覽第六章以懂得有關監聽者的更多信息。必需將所指定的監聽類編寫為可以處置Ant 的構建新聞接發。
-buildfile filename
指定Ant 須要處置的構建文件。默許的構建文件為build.xml。
-Dproperty=value
在敕令行上界說一個特征名-值對。
-find filename
指定Ant 應該處置的構建文件。與-buildfile 選項分歧,假如所指定文件在以後目次中未找到,-find 就請求Ant 在其父目次中再停止搜刮。這類搜刮會持續在其先人目次中停止,直至到達文件體系的根為止,在此假如文件還未找到,則構建掉敗。
-atuoproxy jdk1.5以上的可使用署理設置
-nouserlib 運轉ant時不應用用戶lib中的jar包
-nice 設計主線程優先級
-logfile 應用指定的log日記
-noinput 不許可交互輸出
-keep-going, -k 履行不依附於一切目的
-propertyfile 加載一切屬性設置裝備擺設文件 -d 屬性文件優先


<project default="all">
    <property name="pro_a" value="a value" />
    <property name="pro_b" value="b value" />
   
    <path id="rt.path">
        <pathelement location="${java.home}/jre/lib/rt.jar" />
    </path>
   
    <target name="all">
        <javac srcdir=".">
            <classpath refid="a.path" />
        </javac>
    </target>
</project>

留意:
● 一切構建文件都要有<project>元素,並且至多有一個<target> 元素。
● 關於<project> 元素的default 屬性其實不必定須要默許值。
● 構建文件其實不必定要被定名為build.xml。不外build.xml 是ant 要搜刮的默許文件名。
● 每一個構建文件只能有一個<project> 元素。

在cmd窗口中進入到以後build.xml目次

ant

在以後目次下的build.xml運轉Ant,履行缺省的target。

ant -buildfile build-test.xml

在以後目次下的build-test.xml運轉Ant,履行缺省的target。

ant -buildfile build-test.xml clean

在以後目次下的build-test.xml運轉Ant,履行一個叫做clean的target。

ant -buildfile build-test.xml -Dbuild=build/classes clean

在以後目次下的build-test.xml運轉Ant,履行一個叫做clean的target,並設定build屬性的值為build/classes。

7、ant劇本:應用節點、元素和屬性、敕令指令

1、project 節點元素

project 元素是 Ant 構件文件的根元素, Ant 構件文件至多應當包括一個 project 元素,不然會產生毛病。在每一個 project 元素下,可包括多個 target 元素。接上去向讀者展現一下 project 元素的各屬性。
● name 屬性:用於指定 project 元素的稱號。
● default 屬性:用於指定 project 默許履行時所履行的 target 的稱號。
● basedir 屬性:用於指定基途徑的地位。該屬性沒有指准時,應用 Ant 的構件文件的附目次作為基准目次。

<?xml version="1.0" ?>
<project name="ant-project" default="print-dir" basedir=".">
    <target name="print-dir">
        <echo message="The base dir is: ${basedir}" />
    </target>
</project>

從上例可以看出,在這裡界說了default 屬性的值為print-dir,即當運轉ant 敕令時,假如沒有指明履行的target,則將履行默許的target(print-dir)。另外,還界說了basedir 屬性的值為 “.” ,.表現以後目次,進入以後目次後運轉ant 敕令,得一下成果:

2、target節點元素

target為ant的根本履行單位或是義務,它可以包括一個或多個詳細的單位/義務。多個target 可以存在互相依附關系。它有以下屬性:
● name 屬性:指定 target 元素的稱號,這個屬性在一個 project 元素中是獨一的。我們可以經由過程指定 target 元素的稱號來指定某個 target 。
● depends 屬性:用於描寫 target 之間的依附關系,若與多個 target 存在依附關系時,須要以“,”距離。 Ant 會按照 depends 屬性中 target 湧現的次序順次履行每一個 target ,被依附的target 會先履行。
● if 屬性:用於驗證指定的屬性是存在,若不存在,地點 target 將不會被履行。
● unless 屬性:該屬性的功效與 if 屬性的功效正好相反,它也用於驗證指定的屬性能否存在,若不存在,地點 target 將會被履行。
● description 屬性:該屬性是關於 target 功效的冗長描寫和解釋。
示例:

<?xml version="1.0" ?>
<project name="ant-target" default="print">
    <target name="version" if="ant.java.version">
        <echo message="Java Version: ${ant.java.version}" />
    </target>
    <target name="print" depends="version" unless="docs">
        <description>
            a depend example!
        </description>
        <echo message="The base dir is: ${basedir}" />
    </target>
</project>

從以下成果後可以看到,我們運轉的是名為 print的target ,因為它依附於version這個target義務,所以 version將起首被履行,同時由於體系設置裝備擺設了JDK,所以 ant.java.version 屬性存在,履行了version,輸入信息:"[echo] Java Version: 1.6 ",version履行終了後,接著履行 print,由於docs不存在,而unless屬性是在不存在時進入地點target 的,由此可知 print得以履行,輸入信息:"[echo] The base dir is:D:\Workspace\AntExample\build"。

3、property屬性節點元素

property元素可看做參量或許參數的界說,project 的屬性可以經由過程 property 元從來設定,也可在 Ant 以外設定。若要在內部引入某文件,例如 build.properties 文件,可以經由過程以下內容將其引:
<property file="build.properties"/>
property 元素可用作 task 的屬性值。在 task 中是經由過程將屬性名放在${屬性名}之間,並放在 task 屬性值的地位來完成的。
Ant 供給了一些內置的屬性,它能獲得的體系屬性的列表與 Java 文檔中 System.getProperties() 辦法獲得的屬性分歧,這些體系屬性可參考 sun 網站的解釋。同時, Ant 還供給了一些它本身的內置屬性,以下:
basedir: project 基目次的相對途徑;  
ant.file: buildfile的相對途徑,上例中ant.file值為D:\Workspace\AntExample\build;
ant.version: Ant 的版本信息,本文為1.8.1 ;
ant.project.name: 以後指定的project的名字,即前文說到的project的name屬性值;
ant.java.version: Ant 檢測到的JDK版本,本文為 1.6 。

舉例解釋以下:

<project name="ant-project" default="example">
    <property name="name" value="jojo" />
    <property name="age" value="25" />
    <target name="example">
        <echo message="name: ${name}, age: ${age}" />
    </target>
</project>

上例頂用戶設置了名為name 和age的兩個屬性,這兩個屬性設置後,鄙人文中可以經由過程 ${name} 和 ${age} 分離獲得這兩個屬性值。

4、copy敕令

copy重要用來對文件和目次的復制功效。舉例以下:
● 復制單個文件:

<copy file="old.txt" tofile="new.txt"/>

● 對文件目次停止復制:

<copy todir="../dest_dir">
    <fileset dir="src_dir"/>
</copy>

● 將文件復制到別的的目次:

<copy file="src.txt" todir="c:/base"/>

5、delete敕令

對文件或目次停止刪除,舉例以下:

● 刪除某個文件:

<delete file="/res/image/cat.jpg"/>

● 刪除某個目次:   

<delete dir="/res/image"/>

● 刪除一切的jar文件或空目次:

<delete includeEmptyDirs="true">
       <fileset dir="." includes="**/*.jar"/>
</delete>

6、 mkdir 敕令

創立目次。

<mkdir dir="/home/philander/build/classes"/>

7、 move 敕令

挪動文件或目次,舉例以下:
● 挪動單個文件:

<move file="sourcefile" tofile=”destfile”/>

● 挪動單個文件到另外一個目次:

<move file="sourcefile" todir=”movedir”/>

● 挪動某個目次到另外一個目次:

<move todir="newdir">
    <fileset dir="olddir"/>
</move>

8、echo 敕令

該義務的感化是依據日記或監控器的級別輸入信息。它包含 message 、 file 、 append 和 level 四個屬性,舉例以下
<echo message="ant message" file="/logs/ant.log" append="true">

9、jar 標簽節點元素

該標簽用來生成一個JAR文件,其屬性以下。
● destfile表現JAR文件名。
● basedir表現被歸檔的文件名。
● includes表現別歸檔的文件形式。
● exchudes表現被消除的文件形式。

● compress表現能否緊縮。

示例:

<jar destfile="${webRoot}/${ash_jar}" level="9" compress="true" encoding="utf-8" basedir="${dest}">
    <manifest>
        <attribute name="Implementation-Version" value="Version: 2.2"/>
    </manifest>
</jar>

下面的mainfest是jar包中的MEAT-INF中的MANIFEST.MF中的文件內容

異樣打包操作的的還有war、tgz,曾經解壓操作uzip

<!-- 創立zip -->
<zip basedir="${basedir}\classes" zipfile="temp\output.zip"/>
<!-- 創立tgz -->
<gzip src="classes\**\*.class" zipfile="output.class.gz"/>
<!-- 解壓zip -->
<unzip src="output.class.gz" dest="extractDir"/>
<!-- 樹立war包 -->
<war destfile="${webRoot}/ash.war" basedir="${basedir}/web" webxml="${basedir}/web/WEB-INF/web.xml">
    <exclude name="WEB-INF/classes/**"/>
    <exclude name="WEB-INF/lib/**"/>
    <exclude name="WEB-INF/work/_jsp/**"/>
    <lib dir="${lib.dir}" includes="**/*.jar, **/*.so, **/*.dll">
        <exclude name="${webRoot}\${helloworld_jar}"/>
    </lib>
    <lib file="${webRoot}/${helloworld_jar}"/>
    <classes dir="${dest}" includes="**/*.xml, **/*.properites, **/*.xsd"> </classes>
</war>

10、javac 標簽節點元素

該標簽用於編譯一個或一組java文件,其屬性以下。
● srcdir表現源法式的目次。
● destdir表現class文件的輸入目次。
● include表現被編譯的文件的形式。
● excludes表現被消除的文件的形式。
● classpath表現所應用的類途徑。
● debug表現包括的調試信息。
● optimize表現能否應用優化。
● verbose 表現供給具體的輸入信息。
● fileonerror表現當碰著毛病就主動停滯。

示例

<javac srcdir="${src}" destdir="${dest}"/>
<!-- 設置jvm內存
<javac srcdir="src" fork="true"/>
<javac srcdir="src" fork="true" executable="d:\sdk141\bin\javac"
memoryMaximumSize="128m"/>
-->

11、java 標簽節點元素

該標簽用來履行編譯生成的.class文件,其屬性以下。
● classname 表現將履行的類名。
● jar表現包括該類的JAR文件名。
● classpath所表現用到的類途徑。
● fork表現在一個新的虛擬機中運轉該類。
● failonerror表現當湧現毛病時主動停滯。
● output 表現輸入文件。
● append表現追加或許籠罩默許文件。

示例

<java classname="com.hoo.test.HelloWorld" classpath="${hello_jar}"/>

12、arg 數據參數元素

由Ant構建文件挪用的法式,可以經由過程<arg>元素向其傳遞敕令行參數,如apply,exec和java義務都可接收嵌套<arg>元素,可認為各自的進程挪用指定參數。以下是<arg>的一切屬性。
● values 是一個敕令參數。假如參數中有空格,但又想將它作為零丁一個值,則應用此屬性。
● file 表現一個參數的文件名。在構建文件中,此文件名絕對於以後的任務目次。
● line 表現用空格分隔的多個參數列表。
● 表現途徑,一個作為單個敕令行變量的path-like的字符串;或作為分隔符,Ant會將其改變為特定平台的分隔符。
● pathref 援用的path(應用path元素節點界說path)的id
● prefix 前綴
● suffix 後綴

例子

<arg value="-l -a"/>

是一個含有空格的單個的敕令行變量。

<arg line="-l -a"/>

是兩個空格分隔的敕令行變量。

<arg path="/dir;/dir2:\dir3"/>

是一個敕令行變量,其值在DOS體系上為\dir;\dir2;\dir3;在Unix體系上為/dir:/dir2:/dir3 。

13、ervironment 類型

由Ant構建文件挪用的內部敕令或法式,<env>元素制訂了哪些情況變量要傳遞給正在履行的體系敕令,<env>元素可以接收以部屬性。
● file表現情況變量值的文件名。此文件名要被轉換位一個相對途徑。
● path表現情況變量的途徑。Ant會將它轉換為一個當地商定。
● value 表現情況變量的一個直接變量。
● key 表現情況變量名。
留意 file path 或 value只能取一個。

14、filelist 文件聚集列表

filelist 是一個支撐定名的文件列表的數據類型,包括在一個filelist類型中的文件紛歧定是存在的文件。以下是其一切的屬性。
● dir是用於盤算相對文件名的目次。
● files 是用逗號分隔的文件名列表。
● refid 是對某處界說的一個<filelist>的援用。
留意 dir 和 files 都是需要的,除非指定了refid(這類情形下,dir和files都不許可應用)。

示例

<filelist id="docfiles" dir="${doc.src}" files="foo.xml,bar.xml"/>
文件聚集 ${doc.src}/foo.xml和${doc.src}/bar.xml. 這些文件或許照樣不存在的文件.
<filelist id="docfiles" dir="${doc.src}" files="foo.xml bar.xml"/>
 
<filelist refid="docfiles"/>
 
<filelist id="docfiles" dir="${doc.src}">
    <file name="foo.xml"/>
    <file name="bar.xml"/>
</filelist>

15、fileset 文件類型

fileset 數據類型界說了一組文件,並平日表現為<fileset>元素。不外,很多ant義務構建成了隱式的fileset,這解釋他們支撐一切的fileset屬性和嵌套元素。以下為fileset 的屬性列表。
● dir表現fileset 的基目次。
● casesensitive的值假如為false,那末婚配文件名時,fileset不是辨別年夜小寫的,其默許值為true.
● defaultexcludes 用來肯定能否應用默許的消除形式,默許為true。
● excludes 是用逗號分隔的須要派出的文件形式列表。
● excludesfile 表現每行包括一個消除形式的文件的文件名。
● includes 是用逗號分隔的,須要包括的文件形式列表。
● includesfile 表現每行包含一個包括形式的文件名。

示例

<fileset id="lib.runtime" dir="${lib.path}/runtime">
    <include name="**/*.jar"/>
    <include name="**/*.so"/>
    <include name="**/*.dll"/>
</fileset>
 
<fileset id="lib.container" dir="${lib.path}/container">
    <include name="**/*.jar"/>
</fileset>
 
<fileset id="lib.extras" dir="${lib.path}">
    <include name="test/**/*.jar"/>
</fileset>

16、patternset 類型

fileset 是對文件的分組,而patternset是對形式的分組,他們是慎密相干的概念。

<patternset>支撐4個屬性:includes、excludex、includexfile、excludesfile,這些與fileset雷同。

patternset 還許可以下嵌套元素:include,exclude,includefile 和 excludesfile.

示例

<!-- 诟谇名單 -->
<patternset id="non.test.sources">
  <include name="**/*.java"/>
  <!-- 文件名包括Test的消除 -->
  <exclude name="**/*Test*"/>
</patternset>
 
 
<patternset id="sources">
  <include name="std/**/*.java"/>
  <!-- 斷定前提 存在professional就引入 -->
  <include name="prof/**/*.java" if="professional"/>
  <exclude name="**/*Test*"/>
</patternset>
 
<!-- 一組文件 -->
<patternset includesfile="some-file"/>
<patternset>
  <includesfile name="some-file"/>
<patternset/>
 
<patternset>
  <includesfile name="some-file"/>
  <includesfile name="${some-other-file}" if="some-other-file"/>
<patternset/>

17、filterset 類型

filterset界說了一組過濾器,這些過濾器將在文件挪動或復制時完成文件的文本調換。
重要屬性以下:
● begintoken 表現嵌套過濾器所搜刮的記號,這是標識其開端的字符串。
● endtoken 表現嵌套過濾器所搜刮的記號這是標識其停止的字符串。
● id 是過濾器的獨一標記符。
● refid 是對構建文件中某處界說一個過濾器的援用。

示例

<!-- 將目的文件build.dir目次中的version.txt文件內容中的@DATE@調換成TODAY以後日期的值,並把調換後的文件寄存在dist.dir目次中 -->
<copy file="${build.dir}/version.txt" toFile="${dist.dir}/version.txt">
  <filterset>
    <filter token="DATE" value="${TODAY}"/>
  </filterset>
</copy>
 
<!-- 自界說變量的格局 -->
<copy file="${build.dir}/version.txt" toFile="${dist.dir}/version.txt">
  <!-- 從version.txt中的%地位開端搜刮,到*地位停止,停止調換內容中的@DATE@調換成TODAY以後日期的值-->
  <filterset begintoken="%" endtoken="*">
    <filter token="DATE" value="${TODAY}"/>
  </filterset>
</copy>
 
<!-- 應用內部的過濾界說文件 -->
<copy toDir="${dist.dir}/docs">
  <fileset dir="${build.dir}/docs">
    <include name="**/*.html">
  </fileset>
  <filterset begintoken="%" endtoken="*">
    <!-- 過去文件從內部引入,過去的屬性和值設置裝備擺設在dist.properties文件中 -->
    <filtersfile file="${user.dir}/dist.properties"/>
  </filterset>
</copy>
 
<!-- 應用援用方法,反復應用過濾集 -->
<filterset id="myFilterSet" begintoken="%" endtoken="*">
  <filter token="DATE" value="${TODAY}"/>
</filterset>
 
<copy file="${build.dir}/version.txt" toFile="${dist.dir}/version.txt">
  <filterset refid="myFilterSet"/>
</copy>

18、path類型

path元素用來表現一個類途徑,不外它還可以用於表現其他的途徑。在用作幾個屬性時,路經中的各項用分號或冒號離隔。在構建的時刻,此分隔符將取代以後平台中一切的途徑分隔符,其具有的屬性以下。
● location 表現一個文件或目次。Ant在外部將此擴大為一個相對途徑。
● refid 是對以後構建文件中某處界說的一個path的援用。
● path表現一個文件或途徑名列表。

示例

<path id="buildpath">
    <fileset refid="lib.runtime"/>
    <fileset refid="lib.container"/>
    <fileset refid="lib.extras"/>
</path>
 
<path id="src.paths">
    <fileset id="srcs" dir=".">
        <include name="src/**/*.java"/>
    </fileset>
</path>

8、ant編譯打包、運轉工程

<?xml version="1.0" encoding="UTF-8"?>
<!-- name是以後工程的稱號,default是默許履行的義務,basedir是任務目次(.代表以後根目次) -->
<project name="HelloWorld" default="run" basedir=".">
    <!-- property相似於法式中界說簡略的變量 -->
    <property name="src" value="src"/>
    <property name="dest" value="classes"/>
    <property name="hello_jar" value="helloWorld.jar"/>
    <!--
    target是一個事宜、工作、義務, name是以後工作的稱號,depends是依附的上一件或是多件工作
    假如所依附的工作沒有履行,ant會先運轉依附工作,然後再運轉以後工作
    -->
   
    <!-- 初始化 -->
    <target name="init">
        <!-- 樹立classes目次 -->
        <mkdir dir="${dest}"/>
        <mkdir dir="temp"/>
        <mkdir dir="temp2"/>
    </target>
   
    <!-- 編譯 -->
    <target name="compile" depends="init">
        <javac srcdir="${src}" destdir="${dest}"/>
        <!-- 設置jvm內存
        <javac srcdir="src" fork="true"/>
        <javac srcdir="src" fork="true" executable="d:\sdk141\bin\javac"
        memoryMaximumSize="128m"/>
        -->
    </target>
   
    <!-- 樹立jar包 -->
    <target name="build" depends="compile">
        <!--
        <jar jarfile="${hello_jar}" basedir="${dest}"/>
        創立一個稱號是package.jar文件
        <jar destfile="package.jar" basedir="classes"/>
        -->
        <jar destfile="${hello_jar}" basedir="classes">
            <!-- 向jar包中的main文件中添加內容 -->
            <manifest>
                <attribute name="Built-By" value="${user.name}"/>
                <attribute name="Main-class" value="package.Main"/>
            </manifest>
        </jar>
        <!-- 復制jar文件  todir="復制到目次"-->
        <copy file="${hello_jar}" tofile="${dest}\temp.jar"/>
        <copy todir="temp">
            <!-- 不依照默許方法 defaultexcludes="" -->
              <fileset dir="src">
                <include name="**/*.java"/>
              </fileset>
        </copy>
       
        <copy todir="temp2">
            <fileset dir="src">
                <and>
                    <contains text="main"/>
                    <size value="1" when="more"/>
                </and>
            </fileset>
        </copy>
       
        <!-- 挪動jar文件 -->
        <move file="${dest}\temp.jar" tofile="temp\move-temp.jar"/>
        <!-- 創立zip -->
        <zip basedir="${basedir}\classes" zipfile="temp\output.zip"/>
        <!-- 創立tgz -->
        <gzip src="classes\**\*.class" zipfile="output.class.gz"/>
        <!-- 解壓zip -->
        <unzip src="output.class.gz" dest="extractDir"/>
        <!--調換input.txt內容中的old為new
        <replace file="input.txt" token="old" value="new"/>
        -->
    </target>
   
    <!-- 運轉 -->
    <target name="run" depends="build">
        <java classname="com.hoo.test.HelloWorld" classpath="${hello_jar}"/>
    </target>
   
    <!-- 消除 -->
    <target name="clean">
        <!-- 刪除生成的文件 -->
        <delete dir="${dest}"/>
        <delete file="${hello_jar}"/>
    </target>
   
    <tstamp>
       <format property="OFFSET_TIME"
               pattern="HH:mm:ss"
               offset="10" unit="minute"/>
    </tstamp>
   
    <!-- 從新運轉 -->
    <target name="rerun" depends="clean,run">
        <echo message="###${TSTAMP}#${TODAY}#${DSTAMP}###"/>
        <aunt target="clean"/>
        <aunt target="run"/>
    </target>
</project>

要說的的器械根本上就那末多,ant還有許多內容沒有提到,有興致的可以本身去研討研討。ant不難,你用它就像是在docs掌握台輸出敕令行一樣,只不外ant是將敕令行轉換為xml的劇本信息,可以停止反復的運轉。在必定情形下,進步了效力和反復的任務。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved