ant入門到精通_第1頁
ant入門到精通_第2頁
ant入門到精通_第3頁
ant入門到精通_第4頁
ant入門到精通_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、Ant標(biāo)簽詳解1、<project>標(biāo)簽每個構(gòu)建文件對應(yīng)一個項(xiàng)目,project標(biāo)簽是構(gòu)建文件的跟標(biāo)簽,它可以有多個內(nèi)在屬性,各個屬性的含義分別如下所示:default表示默認(rèn)的執(zhí)行目標(biāo),這個屬性是必須的。basedir表示項(xiàng)目的基準(zhǔn)路徑,這個屬性是必須的。name表示項(xiàng)目名稱。description表示項(xiàng)目的描述(或者是對這個標(biāo)簽的作用進(jìn)行表述)。每個構(gòu)建文件都對應(yīng)于一個項(xiàng)目,但是大型項(xiàng)目經(jīng)常包含大量的子項(xiàng)目,每一個子項(xiàng)目都可以有自己的構(gòu)建文件。2、<target>標(biāo)簽一個項(xiàng)目標(biāo)簽下可以有一個或多個target標(biāo)簽,一個target標(biāo)簽可以依賴其他target標(biāo)簽,t

2、arget所有屬性如下所示:name表示這個標(biāo)簽的名字,這個屬性是必須的。depends表示依賴的目標(biāo)。if表示僅當(dāng)屬性設(shè)置時才執(zhí)行。unless表示當(dāng)屬性沒有設(shè)置時才執(zhí)行。description表示項(xiàng)目的描述(或者是對這個標(biāo)簽的作用進(jìn)行表述)。Ant的depends屬性指定了target的執(zhí)行順序,Ant會依照depends屬性中target標(biāo)簽出現(xiàn)順序依次執(zhí)行每個target,在執(zhí)行之前首先執(zhí)行它所依賴的target標(biāo)簽,例如:項(xiàng)目中的名為run的target的depends屬性compile,而名為compile的target的depends屬性是init,所以這幾個target標(biāo)簽的執(zhí)

3、行順序是initcompilerun。一個target只能被執(zhí)行一次,即使有多個target依賴于它。如果沒有if或unless屬性,target總會被執(zhí)行。3、<mkdir>標(biāo)簽該標(biāo)簽用戶創(chuàng)建一個目錄,它有一個屬性dir用戶指定所創(chuàng)建的目錄,其代碼如下:<mkdir dir="目錄名"/>4、<jar>標(biāo)簽該標(biāo)簽用來生成一個JAR包,其屬性如下:jarfile表示生產(chǎn)JAR文件名。basedir表示被歸檔的目錄。includes表示別歸檔的文件模式。exchudes表示被排除的文件模式。5、<javac標(biāo)簽>該標(biāo)簽用于編譯一

4、個或一組Java文件,其屬性如下:srcdir表示java源程序的目錄。destdir表示class文件的輸出目錄。includes表示別歸檔的文件模式。exchudes表示被排除的文件模式。debug表示包含的調(diào)試信息。optimize表示是否使用優(yōu)化。classpath表示所使用的類路徑。verbose 表示提供詳細(xì)的輸出信息。fileonerror表示當(dāng)碰到錯誤就自動停止。6、<java>標(biāo)簽該標(biāo)簽用來執(zhí)行編譯生成的.class文件,其屬性如下:classname 表示將執(zhí)行的類名。jar表示包含該類的JAR文件名。classpath所表示用到的類路徑。fork表示在一個新的

5、虛擬機(jī)中運(yùn)行該類。failonerror表示當(dāng)出現(xiàn)錯誤時自動停止。output 表示輸出文件。append表示追加或者覆蓋默認(rèn)文件。7、<delete>標(biāo)簽該標(biāo)簽用于刪除一個文件或一組文件,其屬性如下:file表示要刪除的文件。dir表示要刪除的目錄。includeEmptyDirs 表示指定是否要刪除空目錄,默認(rèn)值是刪除。failonerror 表示指定當(dāng)碰到錯誤是否停止,默認(rèn)值是自動停止。verbose表示指定是否列出所刪除的文件,默認(rèn)值為不列出。8、<copy>標(biāo)簽該標(biāo)簽用于文件或文件集的拷貝,其屬性如下:file 表示源文件。tofile 表示目標(biāo)文件。todi

6、r 表示目標(biāo)目錄。overwrite 表示指定是否覆蓋目標(biāo)文件,默認(rèn)值是不覆蓋。includeEmptyDirs 表示制定是否拷貝空目錄,默認(rèn)值為拷貝。failonerror 表示指定如目標(biāo)沒有發(fā)現(xiàn)是否自動停止,默認(rèn)值是停止。verbose 表示制定是否顯示詳細(xì)信息,默認(rèn)值不顯示。9、<war>標(biāo)簽該標(biāo)簽用來生成一個WAR包,其屬性如下:destfile表示生產(chǎn)JAR文件名。dir表示被歸檔的文件目錄。includes表示別歸檔的文件模式。exchudes表示被排除的文件模式。10、<echo>標(biāo)簽該標(biāo)簽用來在控制臺輸出信息,其輸入如下:message表示輸入的內(nèi)容。1

7、1.<exec>執(zhí)行文件: <exec executable="$base.dir/email.bat" > </exec> <exec executable="cmd" dir="D:" failonerror="true"> <arg line="/c del 1.bat" /> </exec>Ant的數(shù)據(jù)類型在構(gòu)建文件中為了標(biāo)識文件或文件組,經(jīng)常需要使用數(shù)據(jù)類型。數(shù)據(jù)類型包含在org.apache.tool.ant.t

8、ypes包中。簡單介紹構(gòu)建文件中一些常用的數(shù)據(jù)類型。1. argument 類型由Ant構(gòu)建文件調(diào)用的程序,可以通過<arg>元素向其傳遞命令行參數(shù),如apply,exec和java任務(wù)均可接受嵌套<arg>元素,可以為各自的過程調(diào)用指定參數(shù)。以下是<arg>的所有屬性:values 是一個命令參數(shù),如果參數(shù)有空格,但又想將它作為單獨(dú)一個值,則使用此屬性。file表示一個參數(shù)的文件名。在構(gòu)建文件中,此文件名相對于當(dāng)前的工作目錄。line表示用空格分隔的多個參數(shù)列表。path表示路徑。2.ervironment 類型由Ant構(gòu)建文件調(diào)用的外部命令或程序,<

9、;env>元素制定了哪些環(huán)境變量要傳遞給正在執(zhí)行的系統(tǒng)命令,<env>元素可以接受以下屬性:file表示環(huán)境變量值得文件名。此文件名要被轉(zhuǎn)換位一個絕對路徑。path表示環(huán)境變量的路徑。Ant會將它轉(zhuǎn)換為一個本地約定。value 表示環(huán)境變量的一個直接變量。key 表示環(huán)境變量名。注意 file path 或 value只能取一個。3.filelist類型Filelist 是一個支持命名的文件列表的數(shù)據(jù)類型,包含在一個filelist類型中的文件不一定是存在的文件。以下是其所有的屬性:dir是用于計算絕對文件名的目錄。files 是用逗號分隔的文件名列表。refid 是對某處定

10、義的一個<filelist>的引用。注意 dir 和 files 都是必要的,除非指定了refid(這種情況下,dir和files都不允許使用)。4.fileset類型Fileset 數(shù)據(jù)類型定義了一組文件,并通常表示為<fileset>元素。不過,許多ant任務(wù)構(gòu)建成了隱式的fileset,這說明他們支持所有的fileset屬性和嵌套元素。以下為fileset 的屬性列表。dir表示fileset 的基目錄。casesensitive的值如果為false,那么匹配文件名時,fileset不是區(qū)分大小寫的,其默認(rèn)值為true.defaultexcludes 用來確定是否

11、使用默認(rèn)的排除模式,默認(rèn)為true。excludes 是用逗號分隔的需要派出的文件模式列表。excludesfile 表示每行包含一個排除模式的文件的文件名。includes 是用逗號分隔的,需要包含的文件模式列表。includesfile 表示每行包括一個包含模式的文件名。5.patternset 類型 Fileset 是對文件的分組,而patternset是對模式的分組,他們是緊密相關(guān)的概念。<patternset>支持4個屬性:includes excludex includexfile 和 excludesfile,與fileset相同。Patternset 還允許以下嵌套

12、元素:include,exclude,includefile 和 excludesfile.6.filterset 類型Filterset定義了一組過濾器,這些過濾器將在文件移動或復(fù)制時完成文件的文本替換。主要屬性如下:begintoken 表示嵌套過濾器所搜索的記號,這是標(biāo)識其開始的字符串。endtoken表示嵌套過濾器所搜索的記號這是標(biāo)識其結(jié)束的字符串。id是過濾器的唯一標(biāo)志符。refid是對構(gòu)建文件中某處定義一個過濾器的引用。7.Path類型Path元素用來表示一個類路徑,不過它還可以用于表示其他的路徑。在用作多個屬性時,路徑中的各項(xiàng)用分號或冒號隔開。在構(gòu)建的時候,此分隔符將代替當(dāng)前平臺

13、中所有的路徑分隔符,其擁有的屬性如下:location 表示一個文件或目錄。Ant在內(nèi)部將此擴(kuò)展為一個絕對路徑。refid 是對當(dāng)前構(gòu)建文件中某處定義的一個path的引用。path表示一個文件或路徑名列表。8.mapper類型Mapper類型定義了一組輸入文件和一組輸出文件間的關(guān)系,其屬性如下:classname 表示實(shí)現(xiàn)mapper類的類名。當(dāng)內(nèi)置mapper不滿足要求時,用于創(chuàng)建定制mapper.classpath表示查找一個定制mapper時所用的類型路徑。classpathref是對某處定義的一個類路徑的引用。from屬性的含義取決于所用的mapper.to屬性的含義取決于所用的map

14、per.type屬性的取值為identity,flatten glob merge regexp 其中之一,它定義了要是用的內(nèi)置mapper的類型。ANT語法ant(another nice tool) 主要用來編譯、運(yùn)行、測試java代碼。此外還可以收發(fā)郵件、執(zhí)行sql以及打jar包和war包下載ant。ant有兩個版本,二進(jìn)制版本和原代碼版本。要編譯和使用ant,你必須要有一個兼容jaxp的xml解析器。使用不同的xml解析器應(yīng)該怎么辦?二進(jìn)制版本中自己帶有了最新的apache xerces2 xml解析器。如果你想用不同的兼容jaxp的解析器,你可以移去ant庫目錄下的xercesimp

15、l.jar和xml-apis.jar兩個文件。你可以要用的解析器放到ant的庫目錄下,也可以把jars文件放到系統(tǒng)的類路徑中。1.配置在環(huán)境變量中先配置ant_home = F:sourceCodeapache-ant-1.8.0;然后再path中添加%ant_home%bin.到dos界面中輸入ant命令,如果出現(xiàn)build fail錯誤提示,說明設(shè)置成功。2.運(yùn)行直接ant命令將打開一個默認(rèn)的構(gòu)建文件,即build.xml如果要調(diào)用我們自己的構(gòu)建文件proj.xml,則需要鍵入以下命令:ant -buildfile proj.xml還可以用一條命令顯示的執(zhí)行多個target目標(biāo):ant -

16、buildfile proj.xml clean jar(意思為執(zhí)行proj.xml文件中的clean和jar兩個target) ,如果不指定target命令,則執(zhí)行默認(rèn)的命令,默認(rèn)的命令在<project name="mytest" default="complie" basedir=".">中的default屬性聲明。3.幫助有些target包括有description屬性,而另一些沒有。這是因?yàn)閍nt會區(qū)別主目標(biāo)和子目標(biāo)。包含有描述信息的為主目標(biāo),沒有描述信息的為子目標(biāo),兩者只是表達(dá)形式上有區(qū)別,功能上是完全相同的。

17、你可以鍵入 ant -projecthelp查看。4Ant的Core Tasks4.1 File(Directory)類4.1.1 Mkdir創(chuàng)建一個目錄,如果他的父目錄不存在,也會被同時創(chuàng)建。例子:<mkdir dir="build/classes"/>說明:如果build不存在,也會被同時創(chuàng)建4.1.2 Copy拷貝一個(組)文件、目錄例子:1.拷貝單個的文件:<copy file="myfile.txt" tofile="mycopy.txt"/>2.拷貝單個的文件到指定目錄下<copy file=

18、"myfile.txt" todir="./some/other/dir"/>3.拷貝一個目錄到另外一個目錄下<copy todir="./new/dir"><fileset dir="src_dir"/></copy>4.拷貝一批文件到指定目錄下<copy todir="./dest/dir"><fileset dir="src_dir"><include name="*/*.java&quo

19、t;/><exclude name="*/Test.java"/></fileset></copy><copy todir="./dest/dir"><fileset dir="src_dir" excludes="*/*.java"/></copy>5.拷貝一批文件到指定目錄下,將文件名后增加。Bak后綴<copy todir="./backup/dir"><fileset dir="sr

20、c_dir"/><mapper type="glob" from="*" to="*.bak"/></copy>6.拷貝一組文件到指定目錄下,替換其中的標(biāo)簽內(nèi)容<copy todir="./backup/dir"><fileset dir="src_dir"/><filterset><filter token="TITLE" value="Foo Bar"/></

21、filterset></copy>4.1.3 Delete刪除一個(組)文件或者目錄例子1.刪除一個文件<delete file="/lib/ant.jar"/>2.刪除指定目錄及其子目錄<delete dir="lib"/>3.刪除指定的一組文件<delete><fileset dir="." includes="*/*.bak"/></delete>4.刪除指定目錄及其子目錄,包括他自己<delete includeEmptyD

22、irs="true"><fileset dir="build"/></delete>4.1.4 Move移動或重命名一個(組)文件、目錄例子:1.移動或重命名一個文件<move file="file.orig" tofile="file.moved"/>2.移動或重命名一個文件到另一個文件夾下面<move file="file.orig" todir="dir/to/move/to"/>3.將一個目錄移到另外一個目錄下&l

23、t;move todir="new/dir/to/move/to"><fileset dir="src/dir"/></move>4.將一組文件移動到另外的目錄下<move todir="some/new/dir"><fileset dir="my/src/dir"><include name="*/*.jar"/><exclude name="*/ant.jar"/></fileset>

24、;</move>5.移動文件過程中增加。Bak后綴<move todir="my/src/dir"><fileset dir="my/src/dir"><exclude name="*/*.bak"/></fileset><mapper type="glob" from="*" to="*.bak"/></move>4.2 Java相關(guān)4.2.1 Javac編譯java原代碼例子1.<j

25、avac srcdir="src"destdir="build"classpath="xyz.jar"debug="on"/>編譯src目錄及其子目錄下的所有。Java文件,。Class文件將放在build指定的目錄下,classpath表示需要用到的類文件或者目錄,debug設(shè)置為on表示輸出debug信息2.<javac srcdir="src:src2"destdir="build"includes="mypackage/p1/*,mypackag

26、e/p2/*"excludes="mypackage/p1/testpackage/*"classpath="xyz.jar"debug="on"/>編譯src和src2目錄及其子目錄下的所有。Java文件,但是package/p1/*,mypackage/p2/*將被編譯,而mypackage/p1/testpackage/*將不會被編譯。Class文件將放在build指定的目錄下,classpath表示需要用到的類文件或者目錄,debug設(shè)置為on表示輸出debug信息3.<propertyname=&quo

27、t;classpath" value=".;./xml-apis.jar;./lib/xbean.jar;./easypo.jar"/><javac srcdir="src"destdir="src"classpath="classpath"debug="on"/>路徑是在property中定義的4.2.2 java執(zhí)行指定的java類例子:1.<java classname="test.Main"><classpath>&

28、lt;pathelement location="dist/test.jar"/><pathelement path="java.class.path"/></classpath></java>classname中指定要執(zhí)行的類,classpath設(shè)定要使用的環(huán)境變量2.<path id="project.class.path"><pathelement location="lib/"/><pathelement path="java

29、.class.path/"/><pathelement path="additional.path"/></path><target . ><rmic .><classpath refid="project.class.path"/></rmic></target>4.3打包相關(guān)4.3.1 jar將一組文件打包例子:1.<jar destfile="dist/lib/app.jar" basedir="build/cla

30、sses"/>將build/classes下面的所有文件打包到dist/lib/app.jar中2.<jar destfile="dist/lib/app.jar"basedir="build/classes"includes="mypackage/test/*"excludes="*/Test.class"/>將build/classes下面的所有文件打包到dist/lib/app.jar中,但是包括mypackage/test所有文件不包括所有的Test.class3.<jar

31、 destfile="dist/lib/app.jar"basedir="build/classes"includes="mypackage/test/*"excludes="*/Test.class"manifest="my.mf"/>manifest屬性指定自己的META-INF/MANIFEST.MF文件,而不是由系統(tǒng)生成4.3.2 war對Jar的擴(kuò)展,用于打包Web應(yīng)用例子:假設(shè)我們的文件目錄如下:thirdparty/libs/jdbc1.jarthirdparty/libs/

32、jdbc2.jarbuild/main/com/myco/myapp/Servlet.classsrc/metadata/myapp.xmlsrc/html/myapp/index.htmlsrc/jsp/myapp/front.jspsrc/graphics/images/gifs/small/logo.gifsrc/graphics/images/gifs/large/logo.gif下面是我們的任務(wù)的內(nèi)容:<war destfile="myapp.war" webxml="src/metadata/myapp.xml"><file

33、set dir="src/html/myapp"/><fileset dir="src/jsp/myapp"/><lib dir="thirdparty/libs"><exclude name="jdbc1.jar"/></lib><classes dir="build/main"/><zipfileset dir="src/graphics/images/gifs"prefix="images

34、"/></war>完成后的結(jié)果:WEB-INF/web.xmlWEB-INF/lib/jdbc2.jarWEB-INF/classes/com/myco/myapp/Servlet.classMETA-INF/MANIFEST.MFindex.htmlfront.jspimages/small/logo.gifimages/large/logo.gif4.3.3 ear用于打包企業(yè)應(yīng)用例子<ear destfile="build.dir/myapp.ear" appxml="src.dir/metadata/application

35、.xml"><fileset dir="build.dir" includes="*.jar,*.war"/></ear>4.4時間戳在生成環(huán)境中使用當(dāng)前時間和日期,以某種方式標(biāo)記某個生成任務(wù)的輸出,以便記錄它是何時生成的,這經(jīng)常是可取的。這可能涉及編輯一個文件,以便插入一個字符串來指定日期和時間,或?qū)⑦@個信息合并到 JAR 或 zip 文件的文件名中。這種需要是通過簡單但是非常有用的 tstamp 任務(wù)來解決的。這個任務(wù)通常在某次生成過程開始時調(diào)用,比如在一個 init 目標(biāo)中。這個任務(wù)不需要屬性,許多情況下只需

36、 <tstamp/> 就足夠了。tstamp 不產(chǎn)生任何輸出;相反,它根據(jù)當(dāng)前系統(tǒng)時間和日期設(shè)置 Ant 屬性。下面是 tstamp 設(shè)置的一些屬性、對每個屬性的說明,以及這些屬性可被設(shè)置到的值的例子:屬性說明例子DSTAMP 設(shè)置為當(dāng)前日期,默認(rèn)格式為yyyymmdd 20031217TSTAMP 設(shè)置為當(dāng)前時間,默認(rèn)格式為 hhmm 1603TODAY 設(shè)置為當(dāng)前日期,帶完整的月份2003 年 12 月 17 日例如,在前一小節(jié)中,我們按如下方式創(chuàng)建了一個 JAR 文件:<jar destfile="package.jar" basedir="

37、;classes"/>在調(diào)用 tstamp 任務(wù)之后,我們能夠根據(jù)日期命名該 JAR 文件,如下所示:<jar destfile="package-DSTAMP.jar" basedir="classes"/>因此,如果這個任務(wù)在 2003 年 12 月 17 日調(diào)用,該 JAR 文件將被命名為 package-20031217.jar。還可以配置 tstamp 任務(wù)來設(shè)置不同的屬性,應(yīng)用一個當(dāng)前時間之前或之后的時間偏移,或以不同的方式格式化該字符串。所有這些都是使用一個嵌套的 format 元素來完成的,如下所示:<t

38、stamp><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 類所定義的那些格式字符相同4.5執(zhí)行SQL語句通過jdbc執(zhí)行SQL語句例子:1.<sqldriver="org

39、.gjt.mm.MySQL.Driver"url="jdbc:mysql:/localhost:3306/mydb"userid="root"password="root"src="data.sql"/>2.<sqldriver="org.database.jdbcDriver"url="jdbc:database-url"userid="sa"password="pass"src="data.sql&q

40、uot;rdbms="oracle"version="8.1."></sql>只有在oracle、版本是8.1的時候才執(zhí)行4.6發(fā)送郵件使用SMTP服務(wù)器發(fā)送郵件例子:<mail mailhost="" mailport="1025" subject="Test build"><from address="me"/><to address="all"/><message>The buildn

41、ame nightly build has completed</message><fileset dir="dist"><includes name="*/*.zip"/></fileset></mail>mailhost: SMTP服務(wù)器地址mailport:服務(wù)器端口subject:主題from:發(fā)送人地址to:接受人地址message:發(fā)送的消息fileset:設(shè)置附件五、自定義TASKANT已經(jīng)內(nèi)置了不少task,像copy、replace、javac等等,但是有時候還需要一些特定的任

42、務(wù)來完成操作,比如在生成JAD文件時,需要一個Midlet-Jar-Size的參數(shù),得到JAR文件的大小,但是通過內(nèi)部的task無法實(shí)現(xiàn),因此可以自己編寫類來實(shí)現(xiàn)此功能,但必須保證該類是從Task類繼承過來的。例:<taskdefname="filesize" classname="ant.FileSizeTask" classpath="$LIB_PATH/FileSizeTask.jar" /><filesize file="$Base/Demo_Build/$jarName" propert

43、y="size" /> <replace dir="store" includes="$jadName" encoding="UTF-8"> <replacefilter token="FILESIZE" value="$size" /></replace>解釋:taskdef:自定義任務(wù),name:任務(wù)名 編寫Ant 自定義任務(wù)很簡單,Ant 能夠使用生成文件中指定的對應(yīng)屬性的值來調(diào)用這個方法,這個方法的名稱需要是 set 加上屬性

44、的名稱,因此在下面的例子中,我們需要名為 setFile() 和 setTofile() 的兩個方法。當(dāng) Ant 遇到生成文件中的一個屬性設(shè)置時,它會尋找相關(guān)任務(wù)中具有適當(dāng)名稱的方法(稱為 setter 方法)。生成文件中的屬性是作為字符串來指定的,因此我們的 setter 方法的參數(shù)可以是一個字符串。在這樣的情況下,Ant 將在展開值所引用的任何屬性之后,使用該屬性的字符串值來調(diào)用我們的方法。但有時我們想把屬性的值看作是一種不同的類型。這里的示例任務(wù)就是這種情況,其中的屬性值引用文件系統(tǒng)上的文件,而不只是引用任意的字符串??梢酝ㄟ^將方法參數(shù)聲明為 java.io.File 類型來容易地做到這

45、點(diǎn)。Ant 將接受屬性的字符串值,并把它解釋為一個文件,然后傳遞給我們的方法。Ant 能夠?qū)ζ渌愋蛨?zhí)行類似的轉(zhuǎn)換,比如 boolean 和 int 類型。但如果提供具有相同名稱但是具有不同參數(shù)的兩個方法,Ant 將使用更明確的那一個方法,因此文件類型將優(yōu)先于字符串類型。例:一個排序的task任務(wù)public class FileSorter extends Task private File file, tofile;/ ant在進(jìn)行任務(wù)處理時會調(diào)用execute()方法 public void execute() throws BuildException System.out.print

46、ln("Sorting file="+file); try BufferedReader from = new BufferedReader(new FileReader(file); BufferedWriter to = new BufferedWriter(new FileWriter(tofile); List allLines = new ArrayList(); / read in the input file String line = from.readLine(); while (line != null) allLines.add(line); line

47、 = from.readLine(); from.close(); / sort the list Collections.sort(allLines); / write out the sorted listfor (ListIterator i=allLines.listIterator(); i.hasNext(); ) String s = (String)i.next(); to.write(s); to.newLine(); to.close(); catch (FileNotFoundException e) throw new BuildException(e); catch

48、(IOException e) throw new BuildException(e); / file參數(shù) public void setFile(File file) this.file = file; / tofile參數(shù) public void setTofile(File tofile) this.tofile = tofile; 使用這個自定義任務(wù):<taskdef name="filesorter" classname=" FileSorter" classpath="filesorter"/> <tar

49、get name="main"> <filesorter file="input.txt" tofile="output.txt"/> </target> 在ant腳本中對外部ant任務(wù)的調(diào)用,在多項(xiàng)目管理中特別有用。兩種方法總結(jié)一下:使用antfile、使用exec 一:使用antfile <target name="copy_lib" description="Copy library files from project1 to project2">

50、; <ant antfile="build.xml" dir="$project1dir" inheritall="false" inheritrefs="false" target="copy_to_project2_lib" /> </target>ant中調(diào)用外部ant任務(wù)的兩種方法antfile表示子項(xiàng)目的構(gòu)建文件。dir表示構(gòu)建文件所再的目錄,缺省為當(dāng)前目錄。inheritall表示父項(xiàng)目的所有屬性在子項(xiàng)目中都可使用,并覆蓋子項(xiàng)目中的同名屬性。缺省為true。

51、inheritrefs表示父項(xiàng)目中的所有引用在子項(xiàng)目中都可以使用,并且不覆蓋子項(xiàng)目中的同名引用。缺省為false。如果在ant任務(wù)中顯示的定義引用,如上例<reference refid="filter.set">則該引用將會覆蓋子項(xiàng)目中的同名引用。 target表示所要運(yùn)行的子項(xiàng)目中的target,如果不寫則為缺省target。 二:使用exec <target name="copy_lib" description="Copy library files from project1 to project2">

52、; <exec executable="cmd.exe"> <arg line="/c &quot;cd ./project1 &amp;&amp; ant copy_to_project2_lib &quot; "/> </exec> </target> 翻譯為命令行就是:cmd.exe /c "cd ./project && ant copy_to_project2_lib" 意思是直接調(diào)用系統(tǒng)控制臺,先執(zhí)行cd命令,再執(zhí)行ant腳本指

53、定任務(wù),/c 表示執(zhí)行后續(xù) String 指定的命令,然后停止。案例分析Ant語法<?xml version="1.0" encoding="UTF-8"?><!- = Mar 17, 2015 3:17:08 PM project description Administrator = -><project name="AutoTestDemo" default="run" basedir="."><property name="src&qu

54、ot; value="src" /><property name="dest" value="classes" /><property name="helloant_jar" value="helloant.jar"></property><target name="init"><mkdir dir="$dest" /></target><target name="

55、;compile" depends="init"><javac srcdir="$src" destdir="$dest" /></target><target name="build" depends="compile"><delete file="$helloant_jar.jar" /><jar jarfile="$helloant_jar" basedir="$dest

56、" /></target><target name="run" depends="build"><java classname="com.zdz.ant.test.HelloAnt" classpath="$helloant_jar" /></target><target name="clean" depends="run"><delete dir="$dest" />

57、<delete file="$helloant_jar" /></target><target name="rerun" depends="clean,run"><ant target="clean" /><ant target="run" /></target></project>Ant生成war包<?xml version="1.0" encoding="UTF-8&quo

58、t;?><!- 定義一個工程,默認(rèn)任務(wù)為warFile。 -><project name="Visit" default="warFile" basedir="."><!- 定義屬性,打成war包的名稱。 -><property name="warFileName" value="VisitFiles.war"></property><!- 定義路徑,編譯java文件時用到的jar包。 -><path id="project.lib"><fileset dir="$bas

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論