锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
鈻?甯哥敤鐗規(guī)畩瀛楃
銆銆鍙浣犺璇嗕簡 HTML 鏍囪錛屼綘渚夸細(xì)鐭ラ亾鐗規(guī)畩瀛楃鐨勭敤澶勩?/p>
]]>
]]>
]]>
]]>
]]>
HTML 鍘熶唬鐮?/font>
鏄劇ず緇撴灉
鎻忚堪
<
<
灝忎簬鍙鋒垨鏄劇ず鏍囪
>
>
澶т簬鍙鋒垨鏄劇ず鏍囪
&
&
鍙敤浜庢樉紺哄叾瀹冪壒孌婂瓧絎?/td>
"
"
寮曞彿
®
?
宸叉敞鍐?/td>
©
?
鐗堟潈
™
?
鍟嗘爣
 
鍗婁釜絀虹櫧浣?/td>
 
涓涓┖鐧戒綅
涓嶆柇琛岀殑絀虹櫧
鈻?ISO Latin-1 鐗規(guī)畩瀛楃
HTML 鍘熶唬鐮?/font>
鏄劇ず緇撴灉
鎻忚堪
Æ
?
Uppercase AE diphthing
Á
謾
Uppercase A, acute accent
Â
?
Uppercase A, circumflex accent
À
脿
Uppercase A, grave accent
Å
?
Uppercase A, ring
Ã
?
Uppercase A, tilde
Ä
?
Uppercase A, dieresis or umlaut mark
Ç
?
Uppercase C, cedilla
Ð
D
Uppercase Eth, Icelandic
É
茅
Uppercase E, acute accent
Ê
錨
Uppercase E, circumflex accent
È
貓
Uppercase E, grave accent
Ë
?
Uppercase E, dieresis or umlaut mark
Í
鉚
Uppercase I, acute accent
Î
?
Uppercase I, circumflex accent
Ì
矛
Uppercase I, grave accent
Ï
?
Uppercase I, dieresis or umlaut mark
Ñ
?
Uppercase N, tilde
Ó
貿(mào)
Uppercase O, acute accent
Ô
?
Uppercase O, circumflex accent
Ò
貌
Uppercase O, grave accent
Ø
?
Uppercase O, slash
Õ
?
Uppercase O, tilde
Ö
?
Uppercase O, dieresis or umlaut mark
Þ
T
Uppercase THORN, Icelandic
Ú
煤
Uppercase U, acute accent
Û
?
Uppercase U, circumflex accent
Ù
霉
Uppercase u, grave accent
Ü
眉
Uppercase U, dieresis or umlaut mark
Ý
Y
Uppercase Y, acute accent
æ
?
Lowercase ae diphthing
á
謾
Lowercase a, acute accent
â
a
Lowercase a, circumflex accent
à
脿
Lowercase a, grave accent
å
?
Lowercase a, ring
ã
?
Lowercase a, tilde
ä
?
Lowercase a, dieresis or umlaut mark
ç
?
Lowercase c, cedilla
ð
e
Lowercase eth, Icelandic
é
茅
Lowercase e, acute accent
ê
錨
Lowercase e, circumflex accent
è
貓
Lowercase e, grave accent
ë
?
Lowercase e, dieresis or umlaut mark
í
鉚
Lowercase i, acute accent
î
?
Lowercase i, circumflex accent
ì
矛
Lowercase i, grave accent
ï
?
Lowercase i, dieresis or umlaut mark
ñ
?
Lowercase n, tilde
ó
貿(mào)
Lowercase o, acute accent
ô
?
Lowercase o, circumflex accent
ò
貌
Lowercase o, grave accent
ø
?
Lowercase o, slash
õ
?
Lowercase o, tilde
ö
?
Lowercase o, dieresis or umlaut mark
ß
?
Lowercase sharp s, German (sz ligature)
þ
t
Lowercase thorn, Icelandic
ú
煤
Lowercase u, acute accent
û
?
Lowercase u, circumflex accent
ù
霉
Lowercase u, grave accent
ü
眉
Lowercase u, dieresis or umlaut mark
ý
y
Lowercase y, acute accent
ÿ
?
Lowercase y, dieresis or umlaut mark
]]>
Apache Ant 鏄竴涓熀浜?Java鐨勭敓鎴愬伐鍏楓?br />綆鍗曠偣璇村氨鏄?java涓殑MAKEFILE,瀹冩牴鎹産uild.xml鐨勫唴瀹硅嚜鍔ㄧ紪璇慾ava
2 涓嬭澆銆佸畨瑁匒nt
瀹夎Ant
涓嬭澆.zip鏂囦歡錛岃В鍘嬬緝鍒癱:\ant1.3(鍚庨潰寮曠敤涓?ANT_HOME%)
2.1 鍦ㄤ綘榪愯Ant涔嬪墠闇瑕佸仛涓浜涢厤緗伐浣溿?br />? 灝哹in鐩綍鍔犲叆PATH鐜鍙橀噺銆?
? 璁懼畾ANT_HOME鐜鍙橀噺錛屾寚鍚戜綘瀹夎Ant鐨勭洰褰曘傚湪涓浜汷S涓婏紝Ant鐨勮剼鏈彲浠ョ寽嫻婣NT_HOME錛圲nix鍜學(xué)indos NT/2000錛夛紞浣嗘渶濂戒笉瑕佷緷璧栬繖涓鐗規(guī)с?
? 鍙夊湴錛岃瀹欽AVA_HOME鐜鍙橀噺錛堝弬鑰冧笅闈㈢殑楂樼駭灝忚妭錛夛紝璇ュ彉閲忓簲璇ユ寚鍚戜綘瀹夎JDK鐨勭洰褰曘?br />娉ㄦ剰錛氫笉瑕佸皢Ant鐨刟nt.jar鏂囦歡鏀懼埌JDK/JRE鐨刲ib/ext鐩綍涓嬨侫nt鏄釜搴旂敤紼嬪簭錛岃宭ib/ext鐩綍鏄負(fù)JDK鎵╁睍浣跨敤鐨勶紙濡侸CE錛孞SSE鎵╁睍錛夈傝屼笖閫氳繃鎵╁睍瑁呭叆鐨勭被浼?xì)鏈夊畨鍏ㄦ枤w潰鐨勯檺鍒躲?br />2.2 榪愯Ant
榪愯Ant闈炲父綆鍗曪紝褰撲綘姝g‘鍦板畨瑁匒nt鍚庯紝鍙杈撳叆ant灝卞彲浠ヤ簡銆?/p>
涓鑸互:ant 鎵撳ご 鍔犱竴涓猙uild.xml涓璽arget 涓殑name灞炴х殑鍊?..涓嬩竴綃囨垜璁蹭粙緇峛uild.xml鍚勪釜浠誨姟鐨勪綔鐢?/p>
? 娌℃湁鎸囧畾浠諱綍鍙傛暟鏃訛紝Ant浼?xì)鍦ㄥ綋鍓嶇洰褰曚笅鏌ヨbuild.xml鏂囦歡銆傚鏋滄壘鍒頒簡灝辯敤璇ユ枃浠朵綔涓篵uildfile銆傚鏋滀綘鐢?-find 閫夐」銆侫nt灝變細(xì)鍦ㄤ笂綰х洰褰曚腑瀵繪壘buildfile錛岀洿鑷沖埌杈炬枃浠剁郴緇熺殑鏍廣傝鎯寵Ant浣跨敤鍏朵粬鐨刡uildfile錛屽彲浠ョ敤鍙傛暟 -buildfile file錛岃繖閲宖ile鎸囧畾浜嗕綘鎯充嬌鐢ㄧ殑buildfile銆?/p>
? 鍙互鎸囧畾鎵ц涓涓垨澶氫釜target銆傚綋鐪佺暐target鏃訛紝Ant浣跨敤鏍囩<project>鐨刣efault灞炴ф墍鎸囧畾鐨則arget銆?/p>
鍛戒護(hù)琛岄夐」鎬葷粨錛?br />ant [options] [target [target2 [target3] ...]]
Options:
-help print this message
-projecthelp print project help information
-version print the version information and exit
-quiet be extra quiet
-verbose be extra verbose
-debug print debugging information
-emacs produce logging information without adornments
-logfile file use given file for log output
-logger classname the class that is to perform logging
-listener classname add an instance of class as a project listener
-buildfile file use specified buildfile
-find file search for buildfile towards the root of the filesystem and use the first one found
-Dproperty=value set property to value
渚嬪瓙
ant
浣跨敤褰撳墠鐩綍涓嬬殑build.xml榪愯Ant錛屾墽琛岀己鐪佺殑target銆?br />ant -buildfile test.xml
浣跨敤褰撳墠鐩綍涓嬬殑test.xml榪愯Ant錛屾墽琛岀己鐪佺殑target銆?br />ant -buildfile test.xml dist
浣跨敤褰撳墠鐩綍涓嬬殑test.xml榪愯Ant錛屾墽琛屼竴涓彨鍋歞ist鐨則arget銆?br />ant -buildfile test.xml -Dbuild=build/classes dist
浣跨敤褰撳墠鐩綍涓嬬殑test.xml榪愯Ant錛屾墽琛屼竴涓彨鍋歞ist鐨則arget錛屽茍璁懼畾build灞炴х殑鍊間負(fù)build/classes銆?/p>
3 緙栧啓build.xml
Ant鐨刡uildfile鏄敤XML鍐欑殑銆傛瘡涓猙uildfile鍚湁涓涓猵roject銆?/p>
buildfile涓瘡涓猼ask鍏冪礌鍙互鏈変竴涓猧d灞炴э紝鍙互鐢ㄨ繖涓猧d鍊煎紩鐢ㄦ寚瀹氱殑浠誨姟銆傝繖涓煎繀欏繪槸鍞竴鐨勩傦紙璇︽儏璇峰弬鑰冧笅闈㈢殑Task灝忚妭錛?/p>
3.1 Projects
project鏈変笅闈㈢殑灞炴э細(xì)
Attribute Description Required
name 欏圭洰鍚嶇О. No
default 褰撴病鏈夋寚瀹歵arget鏃朵嬌鐢ㄧ殑緙虹渷target Yes
basedir 鐢ㄤ簬璁$畻鎵鏈夊叾浠栬礬寰勭殑鍩鴻礬寰勩傝灞炴у彲浠ヨbasedir property瑕嗙洊銆傚綋瑕嗙洊鏃訛紝璇ュ睘鎬ц蹇界暐銆傚鏋滃睘鎬у拰basedir property閮芥病鏈夎瀹氾紝灝變嬌鐢╞uildfile鏂囦歡鐨勭埗鐩綍銆?No
欏圭洰鐨勬弿榪頒互涓涓《綰х殑<description>鍏冪礌鐨勫艦寮忓嚭鐜幫紙鍙傜湅description灝忚妭錛夈?/p>
涓涓」鐩彲浠ュ畾涔変竴涓垨澶氫釜target銆備竴涓猼arget鏄竴緋誨垪浣犳兂瑕佹墽琛岀殑銆傛墽琛孉nt鏃訛紝浣犲彲浠ラ夋嫨鎵ц閭d釜target銆傚綋娌℃湁緇欏畾target鏃訛紝浣跨敤project鐨刣efault灞炴ф墍紜畾鐨則arget銆?/p>
3.2 Targets
涓涓猼arget鍙互渚濊禆浜庡叾浠栫殑target銆備緥濡傦紝浣犲彲鑳戒細(xì)鏈変竴涓猼arget鐢ㄤ簬緙栬瘧紼嬪簭錛屼竴涓猼arget鐢ㄤ簬鐢熸垚鍙墽琛屾枃浠躲備綘鍦ㄧ敓鎴愬彲鎵ц鏂囦歡涔嬪墠蹇呴』鍏堢紪璇戦氳繃錛屾墍浠ョ敓鎴愬彲鎵ц鏂囦歡鐨則arget渚濊禆浜庣紪璇憈arget銆侫nt浼?xì)澶勭悊杩櫩U嶄緷璧栧叧緋匯?/p>
鐒惰岋紝搴斿綋娉ㄦ剰鍒幫紝Ant鐨刣epends灞炴у彧鎸囧畾浜唗arget搴旇琚墽琛岀殑欏哄簭錛嶅鏋滆渚濊禆鐨則arget鏃犳硶榪愯錛岃繖縐峝epends瀵逛簬鎸囧畾浜嗕緷璧栧叧緋葷殑target灝辨病鏈夊獎鍝嶃?/p>
Ant浼?xì)渚濈収depends灞炴т腑target鍑虹幇鐨勯『搴忥紙浠庡乏鍒板彸錛変緷嬈℃墽琛屾瘡涓猼arget銆傜劧鑰岋紝瑕佽浣忕殑鏄彧瑕佹煇涓猼arget渚濊禆浜庝竴涓猼arget錛屽悗鑰呭氨浼?xì)琚厛鎵ц銆?br /><target name="A"/>
<target name="B" depends="A"/>
<target name="C" depends="B"/>
<target name="D" depends="C,B,A"/>
鍋囧畾鎴戜滑瑕佹墽琛宼arget D銆備粠瀹冪殑渚濊禆灞炴ф潵鐪嬶紝浣犲彲鑳借涓哄厛鎵цC錛岀劧鍚嶣錛屾渶鍚嶢琚墽琛屻傞敊浜嗭紝C渚濊禆浜嶣錛孊渚濊禆浜嶢錛屾墍浠ュ厛鎵цA錛岀劧鍚嶣錛岀劧鍚嶤錛屾渶鍚嶥琚墽琛屻?/p>
涓涓猼arget鍙兘琚墽琛屼竴嬈★紝鍗蟲椂鏈夊涓猼arget渚濊禆浜庡畠錛堢湅涓婇潰鐨勪緥瀛愶級銆?/p>
濡傛灉錛堟垨濡傛灉涓嶏級鏌愪簺灞炴ц璁懼畾錛屾墠鎵ц鏌愪釜target銆傝繖鏍鳳紝鍏佽鏍規(guī)嵁緋葷粺鐨勭姸鎬侊紙java version, OS, 鍛戒護(hù)琛屽睘鎬у畾涔夌瓑絳夛級鏉ユ洿濂藉湴鎺у埗build鐨勮繃紼嬨傝鎯寵涓涓猼arget榪欐牱鍋氾紝浣犲氨搴旇鍦╰arget鍏冪礌涓紝鍔犲叆if錛堟垨unless錛夊睘鎬э紝甯︿笂target鍥犺鏈夋墍鍒ゆ柇鐨勫睘鎬с備緥濡傦細(xì)
<target name="build-module-A" if="module-A-present"/>
<target name="build-own-fake-module-A" unless="module-A-present"/>
濡傛灉娌℃湁if鎴杣nless灞炴э紝target鎬諱細(xì)琚墽琛屻?/p>
鍙夌殑description灞炴у彲鐢ㄦ潵鎻愪緵鍏充簬target鐨勪竴琛屾弿榪幫紝榪欎簺鎻忚堪鍙敱-projecthelp鍛戒護(hù)琛岄夐」杈撳嚭銆?/p>
灝嗕綘鐨則stamp task鍦ㄤ竴涓墍璋撶殑鍒濆鍖杢arget鏄緢濂界殑鍋氭硶錛屽叾浠栫殑target渚濊禆榪欎釜鍒濆鍖杢arget銆傝紜繚鍒濆鍖杢arget鏄嚭鐜板湪鍏朵粬target渚濊禆琛ㄤ腑鐨勭涓涓猼arget銆傚湪鏈墜鍐屼腑澶у鏁扮殑鍒濆鍖杢arget鐨勫悕瀛楁槸"init"銆?/p>
target鏈変笅闈㈢殑灞炴э細(xì)
Attribute Description Required
name target鐨勫悕瀛?Yes
depends 鐢ㄩ楀彿鍒嗛殧鐨則arget鐨勫悕瀛楀垪琛紝涔熷氨鏄緷璧栬〃銆?No
if 鎵цtarget鎵闇瑕佽瀹氱殑灞炴у悕銆?No
unless 鎵цtarget闇瑕佹竻闄よ瀹氱殑灞炴у悕銆?No
description 鍏充簬target鍔熻兘鐨勭畝鐭弿榪般?No
3.3 Tasks
涓涓猼ask鏄竴孌靛彲鎵ц鐨勪唬鐮併?/p>
涓涓猼ask鍙互鏈夊涓睘鎬э紙濡傛灉浣犳効鎰忕殑璇濓紝鍙互灝嗗叾縐頒箣涓哄彉閲忥級銆傚睘鎬у彧鍙兘鍖呭惈瀵筽roperty鐨勫紩鐢ㄣ傝繖浜涘紩鐢ㄤ細(xì)鍦╰ask鎵ц鍓嶈瑙f瀽銆?/p>
涓嬮潰鏄疶ask鐨勪竴鑸瀯閫犲艦寮忥細(xì)
<name attribute1="value1" attribute2="value2" ... />
榪欓噷name鏄痶ask鐨勫悕瀛楋紝attributeN鏄睘鎬у悕錛寁alueN鏄睘鎬у箋?/p>
鏈変竴濂楀唴緗殑錛坆uilt-in錛塼ask錛屼互鍙?qiáng)涓浜涘彲閫塼ask錛屼絾浣犱篃鍙互緙栧啓鑷繁鐨則ask銆?/p>
鎵鏈夌殑task閮芥湁涓涓猼ask鍚嶅瓧灞炴с侫nt鐢ㄥ睘鎬у兼潵浜х敓鏃ュ織淇℃伅銆?/p>
鍙互緇檛ask璧嬩竴涓猧d灞炴э細(xì)
<taskname id="taskID" ... />
榪欓噷taskname鏄痶ask鐨勫悕瀛楋紝鑰宼askID鏄繖涓猼ask鐨勫敮涓鏍囪瘑絎︺傞氳繃榪欎釜鏍囪瘑絎︼紝浣犲彲浠ュ湪鑴氭湰涓紩鐢ㄧ浉搴旂殑task銆備緥濡傦紝鍦ㄨ剼鏈腑浣犲彲浠ヨ繖鏍鳳細(xì)
<script ... >
task1.setFoo("bar");
</script>
璁懼畾鏌愪釜task瀹炰緥鐨刦oo灞炴с傚湪鍙︿竴涓猼ask涓紙鐢╦ava緙栧啓錛夛紝浣犲彲浠ュ埄鐢ㄤ笅闈㈢殑璇彞瀛樺彇鐩稿簲鐨勫疄渚嬨?br />project.getReference("task1").
娉ㄦ剰1錛氬鏋渢ask1榪樻病鏈夎繍琛岋紝灝變笉浼?xì)琚敓鏁堝Q堜緥濡傦細(xì)涓嶈瀹氬睘鎬э級錛屽鏋滀綘鍦ㄩ殢鍚庨厤緗畠錛屼綘鎵浣滅殑涓鍒囬兘浼?xì)琚鐩栥?/p>
娉ㄦ剰2錛氭湭鏉ョ殑Ant鐗堟湰鍙兘涓嶄細(xì)鍏煎榪欓噷鎵鎻愮殑灞炴э紝鍥犱負(fù)寰堟湁鍙兘鏍規(guī)湰娌℃湁task瀹炰緥錛屽彧鏈塸roxies銆?/p>
3.4 Properties
涓涓猵roject鍙互鏈夊緢澶氱殑properties銆傚彲浠ュ湪buildfile涓敤property task鏉ヨ瀹氾紝鎴栧湪Ant涔嬪璁懼畾銆備竴涓猵roperty鏈変竴涓悕瀛楀拰涓涓箋俻roperty鍙敤浜巘ask鐨勫睘鎬у箋傝繖鏄氳繃灝嗗睘鎬у悕鏀懼湪"${"鍜?}"涔嬮棿騫舵斁鍦ㄥ睘鎬у肩殑浣嶇疆鏉ュ疄鐜扮殑銆備緥濡傚鏋滄湁涓涓猵roperty builddir鐨勫兼槸"build"錛岃繖涓猵roperty灝卞彲鐢ㄤ簬灞炴у鹼細(xì)${builddir}/classes銆傝繖涓煎氨鍙瑙f瀽涓篵uild/classes銆?/p>
鍐呯疆灞炴?/p>
濡傛灉浣犱嬌鐢ㄤ簡<property> task 瀹氫箟浜嗘墍鏈夌殑緋葷粺灞炴э紝Ant鍏佽浣犱嬌鐢ㄨ繖浜涘睘鎬с備緥濡傦紝${os.name}瀵瑰簲鎿嶄綔緋葷粺鐨勫悕瀛椼?/p>
瑕佹兂寰楀埌緋葷粺灞炴х殑鍒楄〃鍙弬鑰僼he Javadoc of System.getProperties銆?/p>
闄や簡Java鐨勭郴緇熷睘鎬э紝Ant榪樺畾涔変簡涓浜涜嚜宸辯殑鍐呯疆灞炴э細(xì)
basedir project鍩虹洰褰曠殑緇濆璺緞 (涓?lt;project>鐨刡asedir灞炴т竴鏍?銆?br />ant.file buildfile鐨勭粷瀵硅礬寰勩?br />ant.version Ant鐨勭増鏈?br />ant.project.name 褰撳墠鎵ц鐨刾roject鐨勫悕瀛楋紱鐢?lt;project>鐨刵ame灞炴ц瀹?
ant.java.version Ant媯嫻嬪埌鐨凧VM鐨勭増鏈紱 鐩墠鐨勫兼湁"1.1", "1.2", "1.3" and "1.4".
渚嬪瓙
<project name="MyProject" default="dist" basedir=".">
<!-- set global properties for this build -->
<property name="src" value="."/>
<property name="build" value="build"/>
<property name="dist" value="dist"/>
<target name="init">
<!-- Create the time stamp -->
<tstamp/>
<!-- Create the build directory structure used by compile -->
<mkdir dir="${build}"/>
</target>
<target name="compile" depends="init">
<!-- Compile the java code from ${src} into ${build} -->
<javac srcdir="${src}" destdir="${build}"/>
</target>
<target name="dist" depends="compile">
<!-- Create the distribution directory -->
<mkdir dir="${dist}/lib"/>
<!-- Put everything in ${build} into the MyProject-${DSTAMP}.jar file -->
<jar jarfile="${dist}/lib/MyProject-${DSTAMP}.jar" basedir="${build}"/>
</target>
<target name="clean">
<!-- Delete the ${build} and ${dist} directory trees -->
<delete dir="${build}"/>
<delete dir="${dist}"/>
</target>
</project>
3.5 Path-like Structures
浣犲彲浠ョ敤":"鍜?;"浣滀負(fù)鍒嗛殧絎︼紝鎸囧畾綾諱技PATH鍜孋LASSPATH鐨勫紩鐢ㄣ侫nt浼?xì)鎶婂垎闅斀W﹁漿鎹負(fù)褰撳墠緋葷粺鎵鐢ㄧ殑鍒嗛殧絎︺?/p>
褰撻渶瑕佹寚瀹氱被浼艱礬寰勭殑鍊兼椂錛屽彲浠ヤ嬌鐢ㄥ祵濂楀厓绱犮備竴鑸殑褰㈠紡鏄?br /><classpath>
<pathelement path="${classpath}"/>
<pathelement location="lib/helper.jar"/>
</classpath>
location灞炴ф寚瀹氫簡鐩稿浜巔roject鍩虹洰褰曠殑涓涓枃浠跺拰鐩綍錛岃宲ath灞炴ф帴鍙楅楀彿鎴栧垎鍙峰垎闅旂殑涓涓綅緗垪琛ㄣ俻ath灞炴т竴鑸敤浣滈瀹氫箟鐨勮礬寰勶紞錛嶅叾浠栨儏鍐典笅錛屽簲璇ョ敤澶氫釜location灞炴с?/p>
涓虹畝媧佽搗瑙侊紝classpath鏍囩鏀寔鑷繁鐨刾ath鍜宭ocation灞炴с傛墍浠ワ細(xì)
<classpath>
<pathelement path="${classpath}"/>
</classpath>
鍙互琚畝鍐欎綔錛?br /><classpath path="${classpath}"/>
涔熷彲閫氳繃<fileset>鍏冪礌鎸囧畾璺緞銆傛瀯鎴愪竴涓猣ileset鐨勫涓枃浠跺姞鍏ath-like structure鐨勯『搴忔槸鏈畾鐨勩?br /><classpath>
<pathelement path="${classpath}"/>
<fileset dir="lib">
<include name="**/*.jar"/>
</fileset>
<pathelement location="classes"/>
</classpath>
涓婇潰鐨勪緥瀛愭瀯閫犱簡涓涓礬寰勫煎寘鎷細(xì)${classpath}鐨勮礬寰勶紝璺熺潃lib鐩綍涓嬬殑鎵鏈塲ar鏂囦歡錛屾帴鐫鏄痗lasses鐩綍銆?/p>
濡傛灉浣犳兂鍦ㄥ涓猼ask涓嬌鐢ㄧ浉鍚岀殑path-like structure錛屼綘鍙互鐢?lt;path>鍏冪礌瀹氫箟浠栦滑錛堜笌target鍚岀駭錛夛紝鐒跺悗閫氳繃id灞炴у紩鐢紞錛嶅弬鑰僐eferencs渚嬪瓙銆?/p>
path-like structure鍙兘鍖呮嫭瀵瑰彟涓涓猵ath-like structurede鐨勫紩鐢紙閫氳繃宓屽<path>鍏冪礌錛夛細(xì)
<path id="base.path">
<pathelement path="${classpath}"/>
<fileset dir="lib">
<include name="**/*.jar"/>
</fileset>
<pathelement location="classes"/>
</path>
<path id="tests.path">
<path refid="base.path"/>
<pathelement location="testclasses"/>
</path>
鍓嶉潰鎵鎻愮殑鍏充簬<classpath>鐨勭畝媧佸啓娉曞浜?lt;path>涔熸槸鏈夋晥鐨勶紝濡傦細(xì)
<path id="tests.path">
<path refid="base.path"/>
<pathelement location="testclasses"/>
</path>
鍙啓鎴愶細(xì)
<path id="base.path" path="${classpath}"/>
鍛戒護(hù)琛屽彉閲?/p>
鏈変簺task鍙帴鍙楀弬鏁幫紝騫跺皢鍏朵紶閫掔粰鍙︿竴涓繘紼嬨備負(fù)浜嗚兘鍦ㄥ彉閲忎腑鍖呭惈絀烘牸瀛楃錛屽彲浣跨敤宓屽鐨刟rg鍏冪礌銆?br />Attribute Description Required
value 涓涓懡浠よ鍙橀噺錛涘彲鍖呭惈絀烘牸瀛楃銆?鍙兘鐢ㄤ竴涓?br />line 絀烘牸鍒嗛殧鐨勫懡浠よ鍙橀噺鍒楄〃銆?
file 浣滀負(fù)鍛戒護(hù)琛屽彉閲忕殑鏂囦歡鍚嶏紱浼?xì)琚枃錃g鐨勭粷瀵瑰悕鏇夸唬銆?
path 涓涓綔涓哄崟涓懡浠よ鍙橀噺鐨刾ath-like鐨勫瓧絎︿覆錛涙垨浣滀負(fù)鍒嗛殧絎︼紝Ant浼?xì)灏嗗叾铦{鍙樹負(fù)鐗瑰畾騫沖彴鐨勫垎闅旂銆?
渚嬪瓙
<arg value="-l -a"/>
鏄竴涓惈鏈夌┖鏍肩殑鍗曚釜鐨勫懡浠よ鍙橀噺銆?br /><arg line="-l -a"/>
鏄袱涓┖鏍煎垎闅旂殑鍛戒護(hù)琛屽彉閲忋?br /><arg path="/dir;/dir2:\dir3"/>
鏄竴涓懡浠よ鍙橀噺錛屽叾鍊煎湪DOS緋葷粺涓婁負(fù)\dir;\dir2;\dir3錛涘湪Unix緋葷粺涓婁負(fù)/dir:/dir2:/dir3 銆?/p>
References
buildfile鍏冪礌鐨刬d灞炴у彲鐢ㄦ潵寮曠敤榪欎簺鍏冪礌銆傚鏋滀綘闇瑕佷竴閬嶉亶鐨勫鍒剁浉鍚岀殑XML浠g爜鍧楋紝榪欎竴灞炴у氨寰堟湁鐢紞錛嶅澶氭浣跨敤<classpath>緇撴瀯銆?/p>
涓嬮潰鐨勪緥瀛愶細(xì)
<project ... >
<target ... >
<rmic ...>
<classpath>
<pathelement location="lib/"/>
<pathelement path="${java.class.path}/"/>
<pathelement path="${additional.path}"/>
</classpath>
</rmic>
</target>
<target ... >
<javac ...>
<classpath>
<pathelement location="lib/"/>
<pathelement path="${java.class.path}/"/>
<pathelement path="${additional.path}"/>
</classpath>
</javac>
</target>
</project>
鍙互鍐欐垚濡備笅褰㈠紡錛?br /><project ... >
<path id="project.class.path">
<pathelement location="lib/"/>
<pathelement path="${java.class.path}/"/>
<pathelement path="${additional.path}"/>
</path>
<target ... >
<rmic ...>
<classpath refid="project.class.path"/>
</rmic>
</target>
<target ... >
<javac ...>
<classpath refid="project.class.path"/>
</javac>
</target>
</project>
鎵鏈変嬌鐢≒atternSets, FileSets 鎴?path-like structures宓屽鍏冪礌鐨則ask涔熸帴鍙楄繖縐嶇被鍨嬬殑寮曠敤銆?/p>
聽
4.1 File錛圖irectory錛夌被
4.1.1 Mkdir
? 鍒涘緩涓涓洰褰曪紝濡傛灉浠栫殑鐖剁洰褰曚笉瀛樺湪錛屼篃浼?xì)琚悓鏃跺垱寰忋?br />? 渚嬪瓙錛?br /><mkdir dir="build/classes"/>
? 璇存槑錛?濡傛灉build涓嶅瓨鍦紝涔熶細(xì)琚悓鏃跺垱寤?br />4.1.2 Copy
? 鎷瘋礉涓涓紙緇勶級鏂囦歡銆佺洰褰?br />? 渚嬪瓙錛?br />1. 鎷瘋礉鍗曚釜鐨勬枃浠訛細(xì)
<copy file="myfile.txt" tofile="mycopy.txt"/>
2. 鎷瘋礉鍗曚釜鐨勬枃浠跺埌鎸囧畾鐩綍涓?br /><copy file="myfile.txt" todir="../some/other/dir"/>
3. 鎷瘋礉涓涓洰褰曞埌鍙﹀涓涓洰褰曚笅
<copy todir="../new/dir">
<fileset dir="src_dir"/>
</copy>
4. 鎷瘋礉涓鎵規(guī)枃浠跺埌鎸囧畾鐩綍涓?br /><copy todir="../dest/dir">
<fileset dir="src_dir">
<exclude name="**/*.java"/>
</fileset>
</copy>
<copy todir="../dest/dir">
<fileset dir="src_dir" excludes="**/*.java"/>
</copy>
5. 鎷瘋礉涓鎵規(guī)枃浠跺埌鎸囧畾鐩綍涓嬶紝灝嗘枃浠跺悕鍚庡鍔犮侭ak鍚庣紑
<copy todir="../backup/dir">
<fileset dir="src_dir"/>
<mapper type="glob" from="*" to="*.bak"/>
</copy>
6. 鎷瘋礉涓緇勬枃浠跺埌鎸囧畾鐩綍涓嬶紝鏇挎崲鍏朵腑鐨凘鏍囩@鍐呭
<copy todir="../backup/dir">
<fileset dir="src_dir"/>
<filterset>
<filter token="TITLE" value="Foo Bar"/>
</filterset>
</copy>
4.1.3 Delete
? 鍒犻櫎涓涓紙緇勶級鏂囦歡鎴栬呯洰褰?br />? 渚嬪瓙
1. 鍒犻櫎涓涓枃浠?br /><delete file="/lib/ant.jar"/>
2. 鍒犻櫎鎸囧畾鐩綍鍙?qiáng)鍏跺瓙鐩?br /><delete dir="lib"/>
3. 鍒犻櫎鎸囧畾鐨勪竴緇勬枃浠?br /><delete>
<fileset dir="." includes="**/*.bak"/>
</delete>
4. 鍒犻櫎鎸囧畾鐩綍鍙?qiáng)鍏跺瓙鐩綍锛屽寘鎷粬鑷?br /><delete includeEmptyDirs="true">
<fileset dir="build"/>
</delete>
4.1.4 Move
? 縐誨姩鎴栭噸鍛藉悕涓涓紙緇勶級鏂囦歡銆佺洰褰?br />? 渚嬪瓙錛?br />1. 縐誨姩鎴栭噸鍛藉悕涓涓枃浠?br /><move file="file.orig" tofile="file.moved"/>
2. 縐誨姩鎴栭噸鍛藉悕涓涓枃浠跺埌鍙︿竴涓枃浠跺す涓嬮潰
<move file="file.orig" todir="dir/to/move/to"/>
3. 灝嗕竴涓洰褰曠Щ鍒板彟澶栦竴涓洰褰曚笅
<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>
</move>
5. 縐誨姩鏂囦歡榪囩▼涓鍔犮侭ak鍚庣紑
<move todir="my/src/dir">
<fileset dir="my/src/dir">
<exclude name="**/*.bak"/>
</fileset>
<mapper type="glob" from="*" to="*.bak"/>
</move>
聽
4.2 Java鐩稿叧
4.2.1 Javac
? 緙栬瘧java鍘熶唬鐮?br />? 渚嬪瓙
1. <javac srcdir="${src}"
destdir="${build}"
classpath="xyz.jar"
debug="on"
/>
緙栬瘧${src}鐩綍鍙?qiáng)鍏跺瓙鐩綍涓嬬殑鎵鏈夈侸ava鏂囦歡錛屻侰lass鏂囦歡灝嗘斁鍦?锝?jīng)build锝濇寚瀹氱殑鐩綍涓嬶紝classpath琛ㄧず闇瑕佺敤鍒扮殑綾繪枃浠舵垨鑰呯洰褰曪紝debug璁劇疆涓簅n琛ㄧず杈撳嚭debug淇℃伅
2. <javac srcdir="${src}:${src2}"
destdir="${build}"
includes="mypackage/p1/**,mypackage/p2/**"
excludes="mypackage/p1/testpackage/**"
classpath="xyz.jar"
debug="on"
/>
緙栬瘧${src}鍜?{src2}鐩綍鍙?qiáng)鍏跺瓙鐩綍涓嬬殑鎵鏈夈侸ava鏂囦歡錛屼絾鏄痯ackage/p1/**,mypackage/p2/**灝嗚緙栬瘧錛岃宮ypackage/p1/testpackage/**灝嗕笉浼?xì)琚~栬瘧銆侰lass鏂囦歡灝嗘斁鍦?锝?jīng)build锝濇寚瀹氱殑鐩綍涓嬶紝classpath琛ㄧず闇瑕佺敤鍒扮殑綾繪枃浠舵垨鑰呯洰褰曪紝debug璁劇疆涓簅n琛ㄧず杈撳嚭debug淇℃伅
3. <property name="classpath" value=".;./xml-apis.jar;../lib/xbean.jar;./easypo.jar"/>
<javac srcdir="${src}"
destdir="${src}"
classpath="${classpath}"
debug="on"
/>
璺緞鏄湪property涓畾涔夌殑
4.2.2 java
? 鎵ц鎸囧畾鐨刯ava綾?/p>
? 渚嬪瓙錛?br />1. <java classname="test.Main">
<classpath>
<pathelement location="dist/test.jar"/>
<pathelement path="${java.class.path}"/>
</classpath>
</java>
classname涓寚瀹氳鎵ц鐨勭被錛宑lasspath璁懼畾瑕佷嬌鐢ㄧ殑鐜鍙橀噺
2. <path id="project.class.path">
<pathelement location="lib/"/>
<pathelement path="${java.class.path}/"/>
<pathelement path="${additional.path}"/>
</path>
<target ... >
<rmic ...>
<classpath refid="project.class.path"/>
</rmic>
</target>
聽
聽
4.3 鎵撳寘鐩稿叧
4.3.1 jar
? 灝嗕竴緇勬枃浠舵墦鍖?br />? 渚嬪瓙錛?br />1. <jar destfile="${dist}/lib/app.jar" basedir="${build}/classes"/>
灝?{build}/classes涓嬮潰鐨勬墍鏈夋枃浠舵墦鍖呭埌${dist}/lib/app.jar涓?br />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.class
3. <jar destfile="${dist}/lib/app.jar"
basedir="${build}/classes"
includes="mypackage/test/**"
excludes="**/Test.class"
manifest=鈥漨y.mf鈥?br />/>
manifest灞炴ф寚瀹氳嚜宸辯殑META-INF/MANIFEST.MF鏂囦歡錛岃屼笉鏄敱緋葷粺鐢熸垚
4.3.2 war
? 瀵笿ar鐨勬墿灞曪紝鐢ㄤ簬鎵撳寘Web搴旂敤
? 渚嬪瓙錛?br />? 鍋囪鎴戜滑鐨勬枃浠剁洰褰曞涓嬶細(xì)
thirdparty/libs/jdbc1.jar
thirdparty/libs/jdbc2.jar
build/main/com/myco/myapp/Servlet.class
src/metadata/myapp.xml
src/html/myapp/index.html
src/jsp/myapp/front.jsp
src/graphics/images/gifs/small/logo.gif
src/graphics/images/gifs/large/logo.gif
? 涓嬮潰鏄垜浠殑浠誨姟鐨勫唴瀹癸細(xì)
<war destfile="myapp.war" webxml="src/metadata/myapp.xml">
<fileset 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"/>
</war>
? 瀹屾垚鍚庣殑緇撴灉錛?br />WEB-INF/web.xml
WEB-INF/lib/jdbc2.jar
WEB-INF/classes/com/myco/myapp/Servlet.class
META-INF/MANIFEST.MF
index.html
front.jsp
images/small/logo.gif
images/large/logo.gif
4.3.3 ear
? 鐢ㄤ簬鎵撳寘浼佷笟搴旂敤
? 渚嬪瓙
<ear destfile="${build.dir}/myapp.ear" appxml="${src.dir}/metadata/application.xml">
<fileset dir="${build.dir}" includes="*.jar,*.war"/>
</ear>
聽
4.4 鏃墮棿鎴?br />鍦ㄧ敓鎴愮幆澧冧腑浣跨敤褰撳墠鏃墮棿鍜屾棩鏈燂紝浠ユ煇縐嶆柟寮忔爣璁版煇涓敓鎴愪換鍔$殑杈撳嚭錛屼互渚胯褰曞畠鏄綍鏃剁敓鎴愮殑錛岃繖緇忓父鏄彲鍙栫殑銆傝繖鍙兘娑夊強(qiáng)緙栬緫涓涓枃浠訛紝浠ヤ究鎻掑叆涓涓瓧絎︿覆鏉ユ寚瀹氭棩鏈熷拰鏃墮棿錛屾垨灝嗚繖涓俊鎭悎騫跺埌 JAR 鎴?zip 鏂囦歡鐨勬枃浠跺悕涓?br />榪欑闇瑕佹槸閫氳繃綆鍗曚絾鏄潪甯告湁鐢ㄧ殑 tstamp 浠誨姟鏉ヨВ鍐崇殑銆傝繖涓換鍔¢氬父鍦ㄦ煇嬈$敓鎴愯繃紼嬪紑濮嬫椂璋冪敤錛屾瘮濡傚湪涓涓?init 鐩爣涓傝繖涓換鍔′笉闇瑕佸睘鎬э紝璁稿鎯呭喌涓嬪彧闇 <tstamp/> 灝辮凍澶熶簡銆?br />tstamp 涓嶄駭鐢熶換浣曡緭鍑猴紱鐩稿弽錛屽畠鏍規(guī)嵁褰撳墠緋葷粺鏃墮棿鍜屾棩鏈熻緗?Ant 灞炴с備笅闈㈡槸 tstamp 璁劇疆鐨勪竴浜涘睘鎬с佸姣忎釜灞炴х殑璇存槑錛屼互鍙?qiáng)杩欎簺灞炴у彲琚緗埌鐨勫肩殑渚嬪瓙錛?br />灞炴?璇存槑 渚嬪瓙
DSTAMP 璁劇疆涓哄綋鍓嶆棩鏈燂紝榛樿鏍煎紡涓簓yyymmdd 20031217
TSTAMP 璁劇疆涓哄綋鍓嶆椂闂達(dá)紝榛樿鏍煎紡涓?hhmm 1603
TODAY 璁劇疆涓哄綋鍓嶆棩鏈燂紝甯﹀畬鏁寸殑鏈堜喚 2003 騫?12 鏈?17 鏃?br />渚嬪錛屽湪鍓嶄竴灝忚妭涓紝鎴戜滑鎸夊涓嬫柟寮忓垱寤轟簡涓涓?JAR 鏂囦歡錛?/p>
<jar destfile="package.jar" basedir="classes"/>
鍦ㄨ皟鐢?tstamp 浠誨姟涔嬪悗錛屾垜浠兘澶熸牴鎹棩鏈熷懡鍚嶈 JAR 鏂囦歡錛屽涓嬫墍紺猴細(xì)
<jar destfile="package-${DSTAMP}.jar" basedir="classes"/>
鍥犳錛屽鏋滆繖涓換鍔″湪 2003 騫?12 鏈?17 鏃ヨ皟鐢紝璇?JAR 鏂囦歡灝嗚鍛藉悕涓?package-20031217.jar銆?br />榪樺彲浠ラ厤緗?tstamp 浠誨姟鏉ヨ緗笉鍚岀殑灞炴э紝搴旂敤涓涓綋鍓嶆椂闂翠箣鍓嶆垨涔嬪悗鐨勬椂闂村亸縐伙紝鎴栦互涓嶅悓鐨勬柟寮忔牸寮忓寲璇ュ瓧絎︿覆銆傛墍鏈夎繖浜涢兘鏄嬌鐢ㄤ竴涓祵濂楃殑 format 鍏冪礌鏉ュ畬鎴愮殑錛屽涓嬫墍紺猴細(xì)
<tstamp>
<format property="OFFSET_TIME"
pattern="HH:mm:ss"
offset="10" unit="minute"/>
</tstamp>
涓婇潰鐨勬竻鍗曞皢 OFFSET_TIME 灞炴ц緗負(fù)璺濈褰撳墠鏃墮棿 10 鍒嗛挓涔嬪悗鐨勫皬鏃舵暟銆佸垎閽熸暟鍜岀鏁般?br />鐢ㄤ簬瀹氫箟鏍煎紡瀛楃涓茬殑瀛楃涓?java.text.SimpleDateFormat 綾繪墍瀹氫箟鐨勯偅浜涙牸寮忓瓧絎︾浉鍚?/p>
聽
4.5 鎵цSQL璇彞
? 閫氳繃jdbc鎵цSQL璇彞
? 渚嬪瓙錛?br />1. <sql
driver="org.gjt.mm.mysql.Driver"
url="jdbc:mysql://localhost:3306/mydb"
userid="root"
password="root"
src="data.sql"
/>
2. <sql
driver="org.database.jdbcDriver"
url="jdbc:database-url"
userid="sa"
password="pass"
src="data.sql"
rdbms="oracle"
version="8.1."
>
</sql>
鍙湁鍦╫racle銆佺増鏈槸8.1鐨勬椂鍊欐墠鎵ц
聽
4.6 鍙戦侀偖浠?br />? 浣跨敤SMTP鏈嶅姟鍣ㄥ彂閫侀偖浠?br />? 渚嬪瓙錛?br /><mail mailhost="smtp.myisp.com" mailport="1025" subject="Test build">
<from address="me@myisp.com"/>
<to address="all@xyz.com"/>
<message>The ${buildname} nightly build has completed</message>
<fileset dir="dist">
<includes name="**/*.zip"/>
</fileset>
</mail>
? mailhost錛?SMTP鏈嶅姟鍣ㄥ湴鍧
? mailport錛?鏈嶅姟鍣ㄧ鍙?br />? subject錛?涓婚
? from錛?鍙戦佷漢鍦板潃
? to錛?鎺ュ彈浜哄湴鍧
? message錛?鍙戦佺殑娑堟伅
? fileset錛?璁劇疆闄勪歡聽