1.
Ant鏄粈涔堬紵2.
瀹夎Ant3.
榪愯Ant4.
緙栧啓build.xml5.
鍐呯疆task(internet)
6.
EAR task(internet)
7.
WAR task(internet)
8.
JUnit task(internet)
1. Ant鏄粈涔堬紵
Ant鏄竴縐嶅熀浜嶫ava鐨刡uild宸ュ叿銆傜悊璁轟笂鏉ヨ錛屽畠鏈変簺綾諱技浜庯紙Unix錛塁涓殑make 錛屼絾娌℃湁make鐨勭己闄楓?br />
鏃㈢劧鎴戜滑宸茬粡鏈変簡make, gnumake, nmake, jam浠ュ強鍏朵粬鐨刡uild宸ュ叿涓轟粈涔堣繕瑕佽涓縐嶆柊鐨刡uild宸ュ叿鍛紵鍥犱負Ant鐨勫師浣滆呭湪澶氱(紜歡)騫沖彴涓婂紑鍙戣蔣浠舵椂錛屾棤娉曞繊鍙楄繖浜涘伐鍏風殑闄愬埗鍜屼笉渚褲傜被浼間簬make鐨勫伐鍏鋒湰璐ㄤ笂鏄熀浜巗hell錛堣璦錛夌殑錛氫粬浠綆椾緷璧栧叧緋伙紝鐒跺悗鎵ц鍛戒護錛堣繖浜涘懡浠や笌浣犲湪鍛戒護琛屾暡鐨勫懡浠ゆ病澶ぇ鍖哄埆錛夈傝繖灝辨剰鍛崇潃浣犲彲浠ュ緢瀹規槗鍦伴氳繃浣跨敤OS鐗規湁鐨勬垨緙栧啓鏂扮殑錛堝懡浠わ級紼嬪簭鎵╁睍璇ュ伐鍏鳳紱鐒惰岋紝榪欎篃鎰忓懗鐫浣犲皢鑷繁闄愬埗鍦ㄤ簡鐗瑰畾鐨凮S錛屾垨鐗瑰畾鐨凮S綾誨瀷涓婏紝濡俇nix銆?br />
Makefile涔熷緢鍙伓銆備換浣曚嬌鐢ㄨ繃浠栦滑鐨勪漢閮界鍒拌繃鍙伓鐨則ab闂銆侫nt鐨勫師浣滆呯粡甯歌繖鏍烽棶鑷繁錛氣滄槸鍚︽垜鐨勫懡浠や笉鎵ц鍙槸鍥犱負鍦ㄦ垜鐨則ab鍓嶆湁涓涓┖鏍鹼紵錛侊紒鈥濄傜被浼間簬jam鐨勫伐鍏峰緢濂藉湴澶勭悊浜嗚繖綾婚棶棰橈紝浣嗘槸錛堢敤鎴鳳級蹇呴』璁頒綇鍜屼嬌鐢ㄤ竴縐嶆柊鐨勬牸寮忋?br />
Ant灝變笉鍚屼簡銆備笌鍩轟簬shell鍛戒護鐨勬墿灞曟ā寮忎笉鍚岋紝Ant鐢↗ava鐨勭被鏉ユ墿灞曘傦紙鐢ㄦ埛錛変笉蹇呯紪鍐檚hell鍛戒護錛岄厤緗枃浠舵槸鍩轟簬XML鐨勶紝閫氳繃璋冪敤target鏍戯紝灝卞彲鎵ц鍚勭task銆傛瘡涓猼ask鐢卞疄鐜頒簡涓涓疄鐜頒簡鐗瑰畾Task鎺ュ彛鐨勫璞℃潵榪愯銆傦紙濡傛灉浣犲Ant涓鐐規蹇甸兘娌℃湁鐨勮瘽錛屽彲鑳界湅涓嶆噦榪欎竴鑺傦紝娌℃湁鍏崇郴錛屽悗闈細瀵箃arget,task鍋氳緇嗙殑浠嬬粛銆備綘濡傛灉娌℃湁澶鐨勬椂闂寸敋鑷沖彲浠ョ暐榪囪繖涓鑺傦紝鐒跺悗鍐嶅洖鏉ユ祻瑙堜竴涓嬭繖閲岀殑浠嬬粛錛岄偅鏃朵綘灝變細鐪嬫噦浜嗐傚悓鏍鳳紝濡傛灉浣犲make涔嬬被鐨勫伐鍏蜂笉鐔熸倝涔熸病鍏崇郴錛屼笅闈㈢殑浠嬬粛鏍規湰涓嶄細鐢ㄥ埌make涓殑姒傚康銆傦級
蹇呴』鎵胯錛岃繖鏍峰仛錛屽湪鏋勯爏hell鍛戒護鏃朵細澶卞幓涓浜涚壒鏈夌殑琛ㄨ揪鑳藉姏銆傚`find . -name foo -exec rm {}`錛屼絾鍗寸粰浜嗕綘璺ㄥ鉤鍙扮殑鑳藉姏錛嶄綘鍙互鍦ㄤ換浣曞湴鏂瑰伐浣溿傚鏋滀綘鐪熺殑闇瑕佹墽琛屼竴浜泂hell鍛戒護錛孉nt鏈変竴涓?lt;exec> task錛岃繖涓猼ask鍏佽鎵ц鐗瑰畾OS涓婄殑鍛戒護銆?br />
榪斿洖
2. 瀹夎Ant
鐢變簬Ant鏄竴涓狾pen Source鐨勮蔣浠訛紝鎵浠ユ湁涓ょ瀹夎Ant鐨勬柟寮忥紝涓縐嶆槸鐢ㄥ凡緙栬瘧濂界殑binary 鏂囦歡瀹夎Ant錛屽彟涓縐嶆槸鐢ㄦ簮浠g爜鑷繁build Ant銆?br />
binary 褰㈠紡鐨凙nt鍙互浠?a >http://jakarta.apache.org/builds/ant/release/v1.4.1/bin涓嬭澆銆傚鏋滀綘甯屾湜浣犺兘鑷繁緙栬瘧Ant錛屽垯鍙粠 http://jakarta.apache.org/builds/ant/release/v1.4.1/src銆傛敞鎰忔墍鍒楀嚭鐨勮繛鎺ラ兘鏄渶鏂板彂琛岀増鐨凙nt銆傚鏋滀綘璇誨埌姝ゆ枃鏃訛紝鍙戠幇宸茬粡鏈変簡鏇存柊鐨勭増鏈紝閭d箞璇風敤鏂扮増鏈傚鏋滀綘鏄竴涓柉鐙傜殑鎶鏈拷姹傝咃紝浣犱篃鍙互浠?a target="_top">Ant CVS repository涓嬭澆鏈鏂扮増鏈殑Ant銆?br />
緋葷粺闇姹?/i>
瑕佹兂鑷繁build Ant銆備綘闇瑕佷竴涓狫AXP鍏煎鐨刋ML瑙f瀽鍣紙parser錛夋斁鍦ㄤ綘鐨凜LASSPATH緋葷粺鍙橀噺涓?br />
binary 褰㈠紡鐨凙nt鍖呮嫭鏈鏂扮増鐨?a >Apache Crimson XML瑙f瀽鍣ㄣ備綘鍙互浠?a >http://java.sun.com/xml/ 寰楀埌鏇村鐨勫叧浜嶫AXP鐨勪俊鎭傚鏋滀綘甯屾湜浣跨敤鍏朵粬鐨凧AXP鍏煎鐨勮В鏋愬櫒銆備綘瑕佷粠Ant鐨刲ib鐩綍涓垹鎺塲axp.jar浠ュ強crimson.jar銆傜劧鍚庝綘鍙皢浣犲績鐖辯殑瑙f瀽鍣ㄧ殑jar鏂囦歡鏀懼埌Ant鐨刲ib鐩綍涓垨鏀懼湪浣犵殑CLASSPATH緋葷粺鍙橀噺涓?br />
瀵逛簬褰撳墠鐗堟湰鐨凙nt錛岄渶瑕佷綘鐨勭郴緇熶腑鏈塉DK錛?.1鐗堟垨鏇撮珮銆傛湭鏉ョ殑Ant鐗堟湰浼氳姹備嬌鐢↗DK 1.2鎴栨洿楂樼増鏈?br />
瀹夎Ant
binary 鐗堢殑Ant鍖呮嫭涓変釜鐩綍:bin, docs 鍜宭ib銆傚彧鏈塨in鍜宭ib鐩綍鏄繍琛孉nt鎵闇鐨勩傝鎯沖畨瑁匒nt錛岄夋嫨涓涓洰褰曞茍灝嗗彂琛岀増鐨勬枃浠舵嫹璐濆埌璇ョ洰褰曚笅銆傝繖涓洰褰曡縐頒綔ANT_HOME銆?br />
鍦ㄤ綘榪愯Ant涔嬪墠闇瑕佸仛涓浜涢厤緗伐浣溿?br />- 灝哹in鐩綍鍔犲叆PATH鐜鍙橀噺銆?/font>
- 璁懼畾ANT_HOME鐜鍙橀噺錛屾寚鍚戜綘瀹夎Ant鐨勭洰褰曘傚湪涓浜汷S涓婏紝Ant鐨勮剼鏈彲浠ョ寽嫻婣NT_HOME錛圲nix鍜學indos NT/2000錛夛紞浣嗘渶濂戒笉瑕佷緷璧栬繖涓鐗規с?/font>
- 鍙夊湴錛岃瀹欽AVA_HOME鐜鍙橀噺錛堝弬鑰冧笅闈㈢殑楂樼駭灝忚妭錛夛紝璇ュ彉閲忓簲璇ユ寚鍚戜綘瀹夎JDK鐨勭洰褰曘?br />
娉ㄦ剰錛氫笉瑕佸皢Ant鐨刟nt.jar鏂囦歡鏀懼埌JDK/JRE鐨刲ib/ext鐩綍涓嬨侫nt鏄釜搴旂敤紼嬪簭錛岃宭ib/ext鐩綍鏄負JDK鎵╁睍浣跨敤鐨勶紙濡侸CE錛孞SSE鎵╁睍錛夈傝屼笖閫氳繃鎵╁睍瑁呭叆鐨勭被浼氭湁瀹夊叏鏂歸潰鐨勯檺鍒躲?br />
鍙塗ask
Ant鏀寔涓浜涘彲閫塼ask銆備竴涓彲閫塼ask涓鑸渶瑕侀澶栫殑搴撴墠鑳藉伐浣溿傚彲閫塼ask涓嶢nt鐨勫唴緗畉ask鍒嗗紑錛屽崟鐙墦鍖呫傝繖涓彲閫夊寘鍙互浠庝綘涓嬭澆Ant鐨勫悓涓涓湴鏂逛笅杞姐傜洰鍓嶅寘鍚彲閫塼ask鐨刯ar鏂囦歡鍚嶅彨jakarta-ant-1.4.1-optional.jar銆傝繖涓猨ar鏂囦歡搴旇鏀懼埌Ant瀹夎鐩綍鐨刲ib鐩綍涓嬨?br />
姣忎釜鍙塼ask鎵闇鐨勫閮ㄥ簱鍙弬鐪?a >渚濊禆搴?/font>灝忚妭銆傝繖浜涘閮ㄥ簱鍙互鏀懼埌Ant鐨刲ib鐩綍涓嬶紝榪欐牱Ant灝辮兘鑷姩瑁呭叆錛屾垨鑰呭皢鍏舵斁鍏ョ幆澧冨彉閲忎腑銆?br />
Windows
鍋囧畾Ant瀹夎鍦╟:\ant\鐩綍涓嬨備笅闈㈡槸璁懼畾鐜鐨勫懡浠わ細
set ANT_HOME=c:\ant
set JAVA_HOME=c:\jdk1.2.2
set PATH=%PATH%;%ANT_HOME%\bin
Unix (bash)
鍋囧畾Ant瀹夎鍦?usr/local/ant鐩綍涓嬨備笅闈㈡槸璁懼畾鐜鐨勫懡浠わ細
export ANT_HOME=/usr/local/ant
export JAVA_HOME=/usr/local/jdk-1.2.2
export PATH=${PATH}:${ANT_HOME}/bin
楂樼駭
瑕佹兂榪愯Ant蹇呴』浣跨敤寰堝鐨勫彉閲忋備綘鑷沖皯鍙傝冮渶瑕佷笅闈㈢殑鍐呭錛?br />- Ant鐨凜LASSPATH蹇呴』鍖呭惈ant.jar浠ュ強浣犳墍閫夌殑JAXP鍏煎鐨刋ML瑙f瀽鍣ㄧ殑jar鏂囦歡銆?/font>
- 褰撲綘闇瑕丣DK鐨勫姛鑳斤紙濡俲avac鎴杛mic task錛夋椂錛屽浜嶫DK 1.1錛孞DK鐨刢lasses.zip鏂囦歡蹇呴』鏀懼叆CLASSPATH涓紱瀵逛簬JDK 1.2鎴朖DK 1.3錛屽垯蹇呴』鍔犲叆tools.jar銆傚鏋滆瀹氫簡姝g‘鐨凧AVA_HOME鐜鍙橀噺錛孉nt鎵甯︾殑鑴氭湰錛屽湪bin鐩綍涓嬶紝浼氳嚜鍔ㄥ姞鍏ユ墍闇鐨凧DK綾匯?/font>
- 褰撲綘鎵ц鐗瑰畾騫沖彴鐨勭▼搴忥紙濡俥xec task鎴朿vs task錛夋椂錛屽繀欏昏瀹歛nt.home灞炴ф寚鍚慉nt鐨勫畨瑁呯洰褰曘傚悓鏍鳳紝Ant鎵甯︾殑鑴氭湰鍒╃敤ANT_HOME鐜鍙橀噺鑷姩璁劇疆璇ュ睘鎬с?/font>
Building Ant
瑕佹兂浠庢簮浠g爜build Ant錛屼綘瑕佸厛瀹夎Ant婧愪唬鐮佸彂琛岀増鎴栦粠CVS涓璫heckout jakarta-ant妯″潡銆?br />
瀹夎濂芥簮浠g爜鍚庯紝榪涘叆瀹夎鐩綍銆?br />
璁懼畾JAVA_HOME鐜鍙橀噺鎸囧悜JDK鐨勫畨瑁呯洰褰曘傝鎯崇煡閬撴庝箞鍋氳鍙傜湅瀹夎Ant灝忚妭銆?br />
紜繚浣犲凡涓嬭澆浜嗕換浣曡緟鍔﹋ar鏂囦歡錛屼互渚縝uild浣犳墍鎰熷叴瓚g殑task銆傝繖浜沯ar鏂囦歡鍙互鏀懼湪CLASSPATH涓紝涔熷彲浠ユ斁鍦╨ib/optional鐩綍涓嬨傚弬鐪?a >渚濊禆搴?/font>灝忚妭鍙煡涓嶅悓鐨則ask闇瑕侀偅浜沯ar鏂囦歡銆傛敞鎰忚繖浜沯ar鏂囦歡鍙槸鐢ㄤ綔build Ant涔嬬敤銆傝鎯寵繍琛孉nt錛屼綘榪樿鍍?i>瀹夎Ant灝忚妭涓墍鍋氱殑閭f牱璁懼畾榪欎簺jar鏂囦歡銆?br />
鐜板湪浣犲彲浠uild Ant浜嗭細
build -Ddist.dir=<directory_to_contain_Ant_distribution> dist (Windows)
build.sh -Ddist.dir=<directory_to_contain_Ant_distribution> dist (Unix)
榪欐牱灝卞彲浣犳寚瀹氱殑鐩綍涓垱寤轟竴涓猙inary鐗堟湰銆?br />
涓婇潰鐨勫懡浠ゆ墽琛屼笅闈㈢殑鍔ㄤ綔錛?br />- 濡傛灉鏈夊繀瑕佸彲浠ootstrap Ant鐨勪唬鐮併俠ootstrap 鍖呮嫭鎵嬪伐緙栬緫涓浜汚nt浠g爜浠ヤ究榪愯Ant銆俠ootstrap 鐢ㄤ簬涓嬮潰鐨刡uild姝ラ銆?/font>
- 鍚慴uild鑴氭湰浼犻掑弬鏁頒互璋冪敤bootstrap Ant銆傚弬鏁板畾涔変簡Ant鐨勫睘鎬у煎茍鎸囧畾浜咥nt鑷繁鐨刡uild.xml鏂囦歡鐨?dist" target銆?br />
澶у鏁版儏鍐典笅錛屼綘涓嶅繀鐩存帴bootstrap Ant錛屽洜涓篵uild鑴氭湰涓轟綘瀹屾垚榪欎竴鍒囥傝繍琛宐ootstrap.bat (Windows) 鎴?bootstrap.sh (UNIX) 鍙互build涓涓柊鐨刡ootstrap鐗圓nt銆?br />
濡傛灉浣犲笇鏈涘皢Ant瀹夎鍒癆NT_HOME鐩綍涓嬶紝浣犲彲浠ヤ嬌鐢細
build install (Windows)
build.sh install (Unix)
濡傛灉浣犲笇鏈涜煩榪囧啑闀跨殑Javadoc姝ラ錛屽彲浠ョ敤錛?br />build install-lite (Windows)
build.sh install-lite (Unix)
榪欐牱灝卞彧浼氬畨瑁卋in鍜宭ib鐩綍銆?br />
娉ㄦ剰install鍜宨nstall-lite閮戒細瑕嗙洊ANT_HOME涓殑褰撳墠Ant鐗堟湰銆?br />
渚濊禆搴?/b>
濡傛灉浣犻渶瑕佹墽琛岀壒瀹氱殑task錛屼綘闇瑕佸皢瀵瑰簲鐨勫簱鏀懼叆CLASSPATH鎴栨斁鍒癆nt瀹夎鐩綍鐨刲ib鐩綍涓嬨傛敞鎰忎嬌鐢╩apper鏃跺彧闇瑕佷竴涓猺egexp搴撱傚悓鏃訛紝浣犱篃瑕佸畨瑁匒nt鐨勫彲閫塲ar鍖咃紝瀹冨寘鍚簡task鐨勫畾涔夈傚弬鑰冧笂闈㈢殑瀹夎Ant灝忚妭銆?br />
榪斿洖
3. 榪愯Ant
榪愯Ant闈炲父綆鍗曪紝褰撲綘姝g‘鍦?a >瀹夎Ant鍚庯紝鍙杈撳叆ant灝卞彲浠ヤ簡銆?br />
娌℃湁鎸囧畾浠諱綍鍙傛暟鏃訛紝Ant浼氬湪褰撳墠鐩綍涓嬫煡璇uild.xml鏂囦歡銆傚鏋滄壘鍒頒簡灝辯敤璇ユ枃浠朵綔涓篵uildfile銆傚鏋滀綘鐢?-find 閫夐」銆侫nt灝變細鍦ㄤ笂綰х洰褰曚腑瀵繪壘buildfile錛岀洿鑷沖埌杈炬枃浠剁郴緇熺殑鏍廣傝鎯寵Ant浣跨敤鍏朵粬鐨刡uildfile錛屽彲浠ョ敤鍙傛暟 -buildfile file錛岃繖閲?i>file鎸囧畾浜嗕綘鎯充嬌鐢ㄧ殑buildfile銆?br />
浣犱篃鍙互璁懼畾涓浜涘睘鎬э紝浠ヨ鐩朾uildfile涓寚瀹氱殑灞炴у鹼紙鍙傜湅property task錛夈傚彲浠ョ敤 -Dproperty=value 閫夐」錛岃繖閲?i>property鏄寚灞炴х殑鍚嶇О錛岃?i>value鍒欐槸鎸囧睘鎬х殑鍊箋備篃鍙互鐢ㄨ繖縐嶅姙娉曟潵鎸囧畾涓浜涚幆澧冨彉閲忕殑鍊箋備綘涔熷彲浠ョ敤property task鏉ュ瓨鍙栫幆澧冨彉閲忋傚彧瑕佸皢 -DMYVAR=%MYVAR% (Windows) 鎴?-DMYVAR=$MYVAR (Unix) 浼犻掔粰Ant 錛嶄綘灝卞彲浠ュ湪浣犵殑buildfile涓敤${MYVAR}鏉ュ瓨鍙栬繖浜涚幆澧冨彉閲忋?br />
榪樻湁涓や釜閫夐」 -quite錛屽憡璇堿nt榪愯鏃跺彧杈撳嚭灝戦噺鐨勫繀瑕佷俊鎭傝?-verbose錛屽憡璇堿nt榪愯鏃惰杈撳嚭鏇村鐨勪俊鎭?br />
鍙互鎸囧畾鎵ц涓涓垨澶氫釜target銆傚綋鐪佺暐target鏃訛紝Ant浣跨敤鏍囩<project>鐨刣efault灞炴ф墍鎸囧畾鐨則arget銆?br />
濡傛灉鏈夌殑璇濓紝-projecthelp 閫夐」杈撳嚭欏圭洰鐨勬弿榪頒俊鎭拰欏圭洰target鐨勫垪琛ㄣ傚厛鍒楀嚭閭d簺鏈夋弿榪扮殑錛岀劧鍚庢槸娌℃湁鎻忚堪鐨則arget銆?br />
鍛戒護琛岄夐」鎬葷粨錛?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灞炴х殑鍊間負build/classes銆?br />
鏂囦歡
鍦║nix涓婏紝Ant鐨勬墽琛岃剼鏈湪鍋氫換浣曚簨涔嬪墠閮戒細source錛堣騫惰綆楀鹼級~/.antrc 鏂囦歡錛涘湪Windows涓婏紝Ant鐨勬壒澶勭悊鏂囦歡浼氬湪寮濮嬫椂璋冪敤%HOME%\antrc_pre.bat錛屽湪緇撴潫鏃惰皟鐢?HOME%\antrc_post.bat銆備綘鍙互鐢ㄨ繖浜涙枃浠墮厤緗垨鍙栨秷涓浜涘彧鏈夊湪榪愯Ant鏃舵墠闇瑕佺殑鐜鍙橀噺銆傜湅涓嬮潰鐨勪緥瀛愩?br />
鐜鍙橀噺
鍖呰9鑴氭湰錛坵rapper scripts錛変嬌鐢ㄤ笅闈㈢殑鐜鍙橀噺錛堝鏋滄湁鐨勮瘽錛夛細
- JAVACMD Java鍙墽琛屾枃浠剁殑緇濆璺緞銆傜敤榪欎釜鍊煎彲浠ユ寚瀹氫竴涓笉鍚屼簬JAVA_HOME/bin/java(.exe)鐨凧VM銆?/font>
- ANT_OPTS 浼犻掔粰JVM鐨勫懡浠よ鍙橀噺錛嶄緥濡傦紝浣犲彲浠ュ畾涔夊睘鎬ф垨璁懼畾Java鍫嗙殑鏈澶у?br />
鎵嬪伐榪愯Ant
濡傛灉浣犺嚜宸卞姩鎵嬪畨瑁咃紙DIY錛堿nt錛屼綘鍙互鐢ㄤ笅闈㈢殑鍛戒護鍚姩Ant:
java -Dant.home=c:\ant org.apache.tools.ant.Main [options] [target]
榪欎釜鍛戒護涓庡墠闈㈢殑ant鍛戒護涓鏍楓傞夐」鍜宼arget涔熷拰鐢╝nt鍛戒護鏃朵竴鏍楓傝繖涓緥瀛愬亣瀹氫綘鐨凜LASSPATH鍖呭惈:
- ant.jar
- jars/classes for your XML parser
- the JDK's required jar/zip files
榪斿洖
4. 緙栧啓build.xml
Ant鐨刡uildfile鏄敤XML鍐欑殑銆傛瘡涓猙uildfile鍚湁涓涓猵roject銆?br />
buildfile涓瘡涓猼ask鍏冪礌鍙互鏈変竴涓猧d灞炴э紝鍙互鐢ㄨ繖涓猧d鍊煎紩鐢ㄦ寚瀹氱殑浠誨姟銆傝繖涓煎繀欏繪槸鍞竴鐨勩傦紙璇︽儏璇峰弬鑰冧笅闈㈢殑Task灝忚妭錛?br />
Projects
project鏈変笅闈㈢殑灞炴э細
Attribute | Description | Required |
name | 欏圭洰鍚嶇О. | No |
default | 褰撴病鏈夋寚瀹歵arget鏃朵嬌鐢ㄧ殑緙虹渷target | Yes |
basedir | 鐢ㄤ簬璁$畻鎵鏈夊叾浠栬礬寰勭殑鍩鴻礬寰勩傝灞炴у彲浠ヨbasedir property瑕嗙洊銆傚綋瑕嗙洊鏃訛紝璇ュ睘鎬ц蹇界暐銆傚鏋滃睘鎬у拰basedir property閮芥病鏈夎瀹氾紝灝變嬌鐢╞uildfile鏂囦歡鐨勭埗鐩綍銆?/font> | No |
欏圭洰鐨勬弿榪頒互涓涓《綰х殑<description>鍏冪礌鐨勫艦寮忓嚭鐜幫紙鍙傜湅description灝忚妭錛夈?br />
涓涓」鐩彲浠ュ畾涔変竴涓垨澶氫釜target銆備竴涓猼arget鏄竴緋誨垪浣犳兂瑕佹墽琛岀殑銆傛墽琛孉nt鏃訛紝浣犲彲浠ラ夋嫨鎵ц閭d釜target銆傚綋娌℃湁緇欏畾target鏃訛紝浣跨敤project鐨刣efault灞炴ф墍紜畾鐨則arget銆?br />
Targets
涓涓猼arget鍙互渚濊禆浜庡叾浠栫殑target銆備緥濡傦紝浣犲彲鑳戒細鏈変竴涓猼arget鐢ㄤ簬緙栬瘧紼嬪簭錛屼竴涓猼arget鐢ㄤ簬鐢熸垚鍙墽琛屾枃浠躲備綘鍦ㄧ敓鎴愬彲鎵ц鏂囦歡涔嬪墠蹇呴』鍏堢紪璇戦氳繃錛屾墍浠ョ敓鎴愬彲鎵ц鏂囦歡鐨則arget渚濊禆浜庣紪璇憈arget銆侫nt浼氬鐞嗚繖縐嶄緷璧栧叧緋匯?br />
鐒惰岋紝搴斿綋娉ㄦ剰鍒幫紝Ant鐨刣epends灞炴у彧鎸囧畾浜唗arget搴旇琚墽琛岀殑欏哄簭錛嶅鏋滆渚濊禆鐨則arget鏃犳硶榪愯錛岃繖縐峝epends瀵逛簬鎸囧畾浜嗕緷璧栧叧緋葷殑target灝辨病鏈夊獎鍝嶃?br />
Ant浼氫緷鐓epends灞炴т腑target鍑虹幇鐨勯『搴忥紙浠庡乏鍒板彸錛変緷嬈℃墽琛屾瘡涓猼arget銆傜劧鑰岋紝瑕佽浣忕殑鏄彧瑕佹煇涓猼arget渚濊禆浜庝竴涓猼arget錛屽悗鑰呭氨浼氳鍏堟墽琛屻?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錛岀劧鍚嶣錛岀劧鍚嶤錛屾渶鍚嶥琚墽琛屻?br />
涓涓猼arget鍙兘琚墽琛屼竴嬈★紝鍗蟲椂鏈夊涓猼arget渚濊禆浜庡畠錛堢湅涓婇潰鐨勪緥瀛愶級銆?br />
濡傛灉錛堟垨濡傛灉涓嶏級鏌愪簺灞炴ц璁懼畾錛屾墠鎵ц鏌愪釜target銆傝繖鏍鳳紝鍏佽鏍規嵁緋葷粺鐨勭姸鎬侊紙java version, OS, 鍛戒護琛屽睘鎬у畾涔夌瓑絳夛級鏉ユ洿濂藉湴鎺у埗build鐨勮繃紼嬨傝鎯寵涓涓猼arget榪欐牱鍋氾紝浣犲氨搴旇鍦╰arget鍏冪礌涓紝鍔犲叆if錛堟垨unless錛夊睘鎬э紝甯︿笂target鍥犺鏈夋墍鍒ゆ柇鐨勫睘鎬с備緥濡傦細
<target name="build-module-A" if="module-A-present"/>
<target name="build-own-fake-module-A" unless="module-A-present"/>
濡傛灉娌℃湁if鎴杣nless灞炴э紝target鎬諱細琚墽琛屻?br />
鍙夌殑description灞炴у彲鐢ㄦ潵鎻愪緵鍏充簬target鐨勪竴琛屾弿榪幫紝榪欎簺鎻忚堪鍙敱-projecthelp鍛戒護琛岄夐」杈撳嚭銆?br />
灝嗕綘鐨則stamp task鍦ㄤ竴涓墍璋撶殑鍒濆鍖杢arget鏄緢濂界殑鍋氭硶錛屽叾浠栫殑target渚濊禆榪欎釜鍒濆鍖杢arget銆傝紜繚鍒濆鍖杢arget鏄嚭鐜板湪鍏朵粬target渚濊禆琛ㄤ腑鐨勭涓涓猼arget銆傚湪鏈墜鍐屼腑澶у鏁扮殑鍒濆鍖杢arget鐨勫悕瀛楁槸"init"銆?br />
target鏈変笅闈㈢殑灞炴э細
Attribute | Description | Required |
name | target鐨勫悕瀛?/font> | Yes |
depends | 鐢ㄩ楀彿鍒嗛殧鐨則arget鐨勫悕瀛楀垪琛紝涔熷氨鏄緷璧栬〃銆?/font> | No |
if | 鎵цtarget鎵闇瑕佽瀹氱殑灞炴у悕銆?/font> | No |
unless | 鎵цtarget闇瑕佹竻闄よ瀹氱殑灞炴у悕銆?/font> | No |
description | 鍏充簬target鍔熻兘鐨勭畝鐭弿榪般?/font> | No |
Tasks
涓涓猼ask鏄竴孌靛彲鎵ц鐨勪唬鐮併?br />
涓涓猼ask鍙互鏈夊涓睘鎬э紙濡傛灉浣犳効鎰忕殑璇濓紝鍙互灝嗗叾縐頒箣涓哄彉閲忥級銆傚睘鎬у彧鍙兘鍖呭惈瀵筽roperty鐨勫紩鐢ㄣ傝繖浜涘紩鐢ㄤ細鍦╰ask鎵ц鍓嶈瑙f瀽銆?br />
涓嬮潰鏄疶ask鐨勪竴鑸瀯閫犲艦寮忥細
<name attribute1="value1" attribute2="value2" ... />
榪欓噷name鏄痶ask鐨勫悕瀛楋紝attributeN鏄睘鎬у悕錛寁alueN鏄睘鎬у箋?br />
鏈変竴濂楀唴緗殑錛坆uilt-in錛塼ask錛屼互鍙婁竴浜涘彲閫塼ask錛屼絾浣犱篃鍙互緙栧啓鑷繁鐨則ask銆?br />
鎵鏈夌殑task閮芥湁涓涓猼ask鍚嶅瓧灞炴с侫nt鐢ㄥ睘鎬у兼潵浜х敓鏃ュ織淇℃伅銆?br />
鍙互緇檛ask璧嬩竴涓猧d灞炴э細
<taskname id="taskID" ... />
榪欓噷taskname鏄痶ask鐨勫悕瀛楋紝鑰宼askID鏄繖涓猼ask鐨勫敮涓鏍囪瘑絎︺傞氳繃榪欎釜鏍囪瘑絎︼紝浣犲彲浠ュ湪鑴氭湰涓紩鐢ㄧ浉搴旂殑task銆備緥濡傦紝鍦ㄨ剼鏈腑浣犲彲浠ヨ繖鏍鳳細
<script ... >
task1.setFoo("bar");
</script>
璁懼畾鏌愪釜task瀹炰緥鐨刦oo灞炴с傚湪鍙︿竴涓猼ask涓紙鐢╦ava緙栧啓錛夛紝浣犲彲浠ュ埄鐢ㄤ笅闈㈢殑璇彞瀛樺彇鐩稿簲鐨勫疄渚嬨?br />project.getReference("task1").
娉ㄦ剰1錛氬鏋渢ask1榪樻病鏈夎繍琛岋紝灝變笉浼氳鐢熸晥錛堜緥濡傦細涓嶈瀹氬睘鎬э級錛屽鏋滀綘鍦ㄩ殢鍚庨厤緗畠錛屼綘鎵浣滅殑涓鍒囬兘浼氳瑕嗙洊銆?br />
娉ㄦ剰2錛氭湭鏉ョ殑Ant鐗堟湰鍙兘涓嶄細鍏煎榪欓噷鎵鎻愮殑灞炴э紝鍥犱負寰堟湁鍙兘鏍規湰娌℃湁task瀹炰緥錛屽彧鏈塸roxies銆?br />
Properties
涓涓猵roject鍙互鏈夊緢澶氱殑properties銆傚彲浠ュ湪buildfile涓敤property task鏉ヨ瀹氾紝鎴栧湪Ant涔嬪璁懼畾銆備竴涓猵roperty鏈変竴涓悕瀛楀拰涓涓箋俻roperty鍙敤浜巘ask鐨勫睘鎬у箋傝繖鏄氳繃灝嗗睘鎬у悕鏀懼湪"${"鍜?}"涔嬮棿騫舵斁鍦ㄥ睘鎬у肩殑浣嶇疆鏉ュ疄鐜扮殑銆備緥濡傚鏋滄湁涓涓猵roperty builddir鐨勫兼槸"build"錛岃繖涓猵roperty灝卞彲鐢ㄤ簬灞炴у鹼細${builddir}/classes銆傝繖涓煎氨鍙瑙f瀽涓篵uild/classes銆?br />
鍐呯疆灞炴?br />
濡傛灉浣犱嬌鐢ㄤ簡<property> task 瀹氫箟浜嗘墍鏈夌殑緋葷粺灞炴э紝Ant鍏佽浣犱嬌鐢ㄨ繖浜涘睘鎬с備緥濡傦紝${os.name}瀵瑰簲鎿嶄綔緋葷粺鐨勫悕瀛椼?br />
瑕佹兂寰楀埌緋葷粺灞炴х殑鍒楄〃鍙弬鑰?a >the Javadoc of System.getProperties銆?br />
闄や簡Java鐨勭郴緇熷睘鎬э紝Ant榪樺畾涔変簡涓浜涜嚜宸辯殑鍐呯疆灞炴э細 basedir project鍩虹洰褰曠殑緇濆璺緞 (涓?lt;project>鐨刡asedir灞炴т竴鏍?銆?
ant.file buildfile鐨勭粷瀵硅礬寰勩?
ant.version Ant鐨勭増鏈?
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>
Token Filters
涓涓猵roject鍙互鏈夊緢澶歵okens錛岃繖浜泃okens鍦ㄦ枃浠舵嫹璐濇椂浼氳鑷姩鎵╁睍錛岃繖瑕佹眰鍦ㄦ敮鎸佽繖涓琛屼負鐨則ask涓夋嫨榪囨護鎷瘋礉鍔熻兘銆傝繖涓鍔熻兘鍙敤filter task鍦╞uildfile涓瀹氥?br />
鏃㈢劧榪欏緢鍙兘鏄竴涓湁鍗卞鐨勮涓猴紝鏂囦歡涓殑tokens蹇呴』閲囧彇@token@鐨勫艦寮忥紝榪欓噷token鏄痜ilter task涓瀹氱殑token鍚嶃傝繖縐峵oken璇硶涓庡叾浠朾uild緋葷粺鎵ц綾諱技filtering鐨勮娉曠浉鍚岋紝鑰屼笖涓庡ぇ澶氭暟鐨勭紪紼嬪拰鑴氭湰璇█浠ュ強鏂囨。緋葷粺騫朵笉鍐茬獊錛?br />
娉ㄦ剰錛氬鏋滃湪涓涓枃浠朵腑鍙戠幇浜嗕竴涓狜token@褰㈠紡鐨則oken錛屼絾娌℃湁filter涓庤繖涓猼oken鍏寵繛錛屽垯涓嶄細鍙戠敓浠諱綍浜嬶紱鍥犳錛屾病鏈夎漿涔夋柟娉曪紞浣嗗彧瑕佷綘涓簍oken閫夋嫨鍚堥傜殑鍚嶅瓧錛屽氨涓嶄細浜х敓闂銆?br />
璀﹀憡錛氬鏋滀綘鍦ㄦ嫹璐漛inary鏂囦歡鏃舵墦寮filtering鍔熻兘錛屼綘鏈夊彲鑳界牬鍧忔枃浠躲傝繖涓姛鑳藉彧閽堝鏂囨湰鏂囦歡銆?br />
Path-like Structures
浣犲彲浠ョ敤":"鍜?;"浣滀負鍒嗛殧絎︼紝鎸囧畾綾諱技PATH鍜孋LASSPATH鐨勫紩鐢ㄣ侫nt浼氭妸鍒嗛殧絎﹁漿鎹負褰撳墠緋葷粺鎵鐢ㄧ殑鍒嗛殧絎︺?br />
褰撻渶瑕佹寚瀹氱被浼艱礬寰勭殑鍊兼椂錛屽彲浠ヤ嬌鐢ㄥ祵濂楀厓绱犮備竴鑸殑褰㈠紡鏄?br /> <classpath>
<pathelement path="${classpath}"/>
<pathelement location="lib/helper.jar"/>
</classpath>
location灞炴ф寚瀹氫簡鐩稿浜巔roject鍩虹洰褰曠殑涓涓枃浠跺拰鐩綍錛岃宲ath灞炴ф帴鍙楅楀彿鎴栧垎鍙峰垎闅旂殑涓涓綅緗垪琛ㄣ俻ath灞炴т竴鑸敤浣滈瀹氫箟鐨勮礬寰勶紞錛嶅叾浠栨儏鍐典笅錛屽簲璇ョ敤澶氫釜location灞炴с?br />
涓虹畝媧佽搗瑙侊紝classpath鏍囩鏀寔鑷繁鐨刾ath鍜宭ocation灞炴с傛墍浠ワ細
<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>
涓婇潰鐨勪緥瀛愭瀯閫犱簡涓涓礬寰勫煎寘鎷細${classpath}鐨勮礬寰勶紝璺熺潃lib鐩綍涓嬬殑鎵鏈塲ar鏂囦歡錛屾帴鐫鏄痗lasses鐩綍銆?br />
濡傛灉浣犳兂鍦ㄥ涓猼ask涓嬌鐢ㄧ浉鍚岀殑path-like structure錛屼綘鍙互鐢?lt;path>鍏冪礌瀹氫箟浠栦滑錛堜笌target鍚岀駭錛夛紝鐒跺悗閫氳繃id灞炴у紩鐢紞錛嶅弬鑰?a >Referencs渚嬪瓙銆?br />
path-like structure鍙兘鍖呮嫭瀵瑰彟涓涓猵ath-like structurede鐨勫紩鐢紙閫氳繃宓屽<path>鍏冪礌錛夛細
<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>涔熸槸鏈夋晥鐨勶紝濡傦細
<path id="tests.path">
<path refid="base.path"/>
<pathelement location="testclasses"/>
</path>
鍙啓鎴愶細
<path id="base.path" path="${classpath}"/>
鍛戒護琛屽彉閲?br />
鏈変簺task鍙帴鍙楀弬鏁幫紝騫跺皢鍏朵紶閫掔粰鍙︿竴涓繘紼嬨備負浜嗚兘鍦ㄥ彉閲忎腑鍖呭惈絀烘牸瀛楃錛屽彲浣跨敤宓屽鐨刟rg鍏冪礌銆?br />
Attribute | Description | Required |
value | 涓涓懡浠よ鍙橀噺錛涘彲鍖呭惈絀烘牸瀛楃銆?/font> | 鍙兘鐢ㄤ竴涓?/font> |
line | 絀烘牸鍒嗛殧鐨勫懡浠よ鍙橀噺鍒楄〃銆?/font> |
file | 浣滀負鍛戒護琛屽彉閲忕殑鏂囦歡鍚嶏紱浼氳鏂囦歡鐨勭粷瀵瑰悕鏇夸唬銆?/font> |
path | 涓涓綔涓哄崟涓懡浠よ鍙橀噺鐨刾ath-like鐨勫瓧絎︿覆錛涙垨浣滀負鍒嗛殧絎︼紝Ant浼氬皢鍏惰漿鍙樹負鐗瑰畾騫沖彴鐨勫垎闅旂銆?/font> |
渚嬪瓙
<arg value="-l -a"/>
鏄竴涓惈鏈夌┖鏍肩殑鍗曚釜鐨勫懡浠よ鍙橀噺銆?br /> <arg line="-l -a"/>
鏄袱涓┖鏍煎垎闅旂殑鍛戒護琛屽彉閲忋?br /> <arg path="/dir;/dir2:\dir3"/>
鏄竴涓懡浠よ鍙橀噺錛屽叾鍊煎湪DOS緋葷粺涓婁負\dir;\dir2;\dir3錛涘湪Unix緋葷粺涓婁負/dir:/dir2:/dir3 銆?br />
References
buildfile鍏冪礌鐨刬d灞炴у彲鐢ㄦ潵寮曠敤榪欎簺鍏冪礌銆傚鏋滀綘闇瑕佷竴閬嶉亶鐨勫鍒剁浉鍚岀殑XML浠g爜鍧楋紝榪欎竴灞炴у氨寰堟湁鐢紞錛嶅澶氭浣跨敤<classpath>緇撴瀯銆?br />
涓嬮潰鐨勪緥瀛愶細
<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涔熸帴鍙楄繖縐嶇被鍨嬬殑寮曠敤銆?/font>