Jakarta Ant
I. Ant ¾ß ³îÀÚ~
Ant ¶õ "Java ±â¹ÝÀÇ ºôµå µµ±¸ÀÔ´Ï´Ù" ¶ó°íµé ¸¹ÀÌ ³ª¿ÍÀÖ½À´Ï´Ù
±Ùµ¥ ÀÌ°Ô ´ëü ¹«¼ø ¶æÀ̶õ ¸»Àΰ¡ ¤Ñ.¤Ñ;
½±°Ô ¿¹±âÇؼ ȯ°æ¿¡ ±¸¾Ö¹ÞÁö ¾Ê°í °£´ÜÈ÷ java ¼Ò½º¸¦ ÄÄÆÄÀÏ ÇÏ°í ÇÊ¿äÇÑ ÆÄÀÏÀÌ ÀÖ´Ù¸é
±× ÆÄÀϵéÀ» º¹»ç³ª »èÁ¦ÇÏ¸ç ¶ÇÇÑ javadoc À̳ª war °°Àº ¹èÆ÷¿ë ÆÄÀϱîÁö »ý¼ºÇØ ÁÖ¸ç
ÇÊ¿äÇÏ´Ù¸é ¼¹ö¿¡ ±îÁö ¹Ù·Î Àû¿ëÇÒ ¼ö ÀÖµµ·Ï µµ¿ÍÁÖ´Â µµ±¸ÀÔ´Ï´Ù.
¶ÇÇÑ ¿©·¯ÆÀ¿øµéÀÌ ÇÁ·ÎÁ§Æ®¸¦ ÁøÇàÇÒ ¶§ »õ·Î¿î ÆÀ¿øÀÌ Âü°¡ÇÏ´õ¶óµµ
Ant ¼³Á¤ÆÄÀÏÀ» °øÀ¯ÇÔÀ¸·Î½á ¼Õ½±°Ô Âü¿©°¡ °¡´ÉÇÏ´Ù´Â °ÍÀÔ´Ï´Ù
¾ÆÁ÷ »ç¿ëÇØ º¸Áö ¾Ê¾Ò´Ù¸é ¾ó·· ÀÍÇô¼ »ç¿ëÇغ¾½Ã´Ù ¹«~Áö ÆíÇÏ´ä´Ï´Ù
II. ¼³Ä¡Çغ¸ÀÚ
´Ù¿î·Îµå
Ant
http://ant.apache.org/bindownload.cgi
Ant manual
http://ant.apache.org/manual/index.html
http://ant.apache-korea.org/manual/index.html
´Ù¿î¹ÞÀº ÆÄÀÏÀÇ ¾ÐÃàÀ» Ç®°í ȯ°æº¯¼ö ¹× Æнº¸¦ Àâ¾ÆÁÝ´Ï´Ù
set ANT_HOME=c:\ant
set JAVA_HOME=c:\jdk1.4.2
set PATH=%PATH%;%ANT_HOME%\bin
III. °£´ÜÇÑ Ant ¿¹Á¦
Ant¸¦ ÀÌ¿ëÇÏ¿© web applicationÀ» ±¸¼ºÇÒ ¶§ ´ÙÀ½ÀÇ ±¸Á¶¸¦ À¯ÁöÇϱ⸦ ±ÇÀåÇÕ´Ï´Ù
¨ç build : src, web, docs¿¡¼ °á°úÀûÀ¸·Î ¸¸µé¾îÁø »êÃâ¹° µð·ºÅ丮
¨è dist : build¸¦ ¹èÆ÷Çϱâ À§ÇÑ ¹èÆ÷ µð·ºÅ丮
¨é docs : ¹èÆ÷ÆÇ¿¡ ¹èÆ÷ÇÒ Á¤ÀûÀÎ ¹®¼¸¦ °ü¸®ÇÒ µð·ºÅ丮
¨ê src : /WEB-INF/classes ¿¡ À§Ä¡ÇÒ java ¼Ò½º µð·ºÅ丮
¨ë web : HTML, JSP, À̹ÌÁöµîÀÇ ÄÁÅÙÆ® µð·ºÅ丮 (WEB-INFÀÇ ¼ºêµð·ºÅ丮 Æ÷ÇÔ)
¨ì build.properties : build.xml¿¡¼ »ç¿ëÇÒ properties
¨í build.xml : ant ¸í·ÉÀ¸·Î ½ÇÇàµÉ ¼³Á¤ÆÄÀÏ
src¿¡ ÇϳªÀÌ»óÀÇ java ¼Ò½º¸¦ Å×½ºÆ®·Î ³Ö¾î ³õÀ¸¼¼¿ä
ÀÚ ÀÌ·¸°Ô µð·ºÅ丮¸¦ ¼³Á¤ÇÏ°í build.xml À» ´ÙÀ½ step¿¡ µû¶ó µû¶ó ÇØ BOA¿ä ^^&
STEP 1. build.xml ÀÇ ±âº»±¸Á¶
xmlÀ» ±âº»ÀûÀÎ ³»¿ëÀ» ¾È´Ù¸é ÀÌÇØÇϱ⠽±½À´Ï´Ù
ÇϳªÀÇ build ÆÄÀÏÀº ÇϳªÀÇ project·Î ±¸¼ºµÇ¸ç ÀÌ´Â ´Ù½Ã ¿©·¯ targetÀ¸·Î ±¸¼ºµË´Ï´Ù
target À̶õ ºôµå °úÁ¤Áß ¼öÇàÇØ¾ß ÇÒ taskµéÀ» ¸ð¾Æ³õÀº job ´ÜÀ§ ¶ó°í º¸¸é µË´Ï´Ù
compile targetÀ̶ó ÇÑ´Ù¸é compile¿¡ °ü·ÃµÈ ÀÛ¾÷µéÀ» ¸ð¾Æ³õÀº ±×·ìÀ̶ó »ý°¢ÇÏ¸é ½±°Ô ÀÌÇØ µÉ°Ì´Ï´Ù
STEP 2. ½Ã~ÀÛ Ant ¸Àº¸±â~
¨ç build.xml¿¡ ´ÙÀ½À» ÀÔ·ÂÇÑ ÈÄ ÀúÀå ÇÕ´Ï´Ù
-. project
project´Â Çϳª ÀÌ»óÀÇ targetÀ» Á¤ÀÇ ÇÕ´Ï´Ù ¶ÇÇÑ ÇϳªÀÇ targetÀº taskÀÇ ÁýÇÕÀÔ´Ï´Ù
ant¸¦ ½ÇÇàÇÒ ½Ã¿¡ ¾î´À Ÿ°ÙÀ» ½ÇÇàÇÒ °ÍÀÎÁö ÁöÁ¤ÇÒ ¼ö°¡ ÀÖÀ¸¸ç (¿¹: \ant clear)
ÁöÁ¤ÇÏÁö ¾Ê¾ÒÀ» °æ¿ì µðÆúÆ®·Î ¼³Á¤µÈ °ªÀÌ »ç¿ëµË´Ï´Ù À̺κÐÀÌ default="clear"ÀÔ´Ï´Ù
-. property
Àü¿ªº¯¼ö ¼³Á¤ ȤÀº ±×·¸°Ô »ç¿ëÇÒ build.properties¸¦ Á¤ÀÇ ÇÕ´Ï´Ù
build.properties¿¡ catalina.homeÀ» Á¤ÀÇÇÏ¿´À¸¸ç ¿©·¯ ȯ°æÀÌ º¯ÇÏ´õ¶óµµ ÀÌ °ª¸¸
º¯°æÇØÁÖ¸é build.xmlÀ» ¼öÁ¤¾øÀÌ ¹Ù·Î ½ÇÇà °¡´ÉÇÕ´Ï´Ù
-. echo
message ³»¿ëÀ» Ãâ·Â ÇÕ´Ï´Ù
-. target
target À̶õ taskÀÇ ÁýÇÕÀ¸·Î ½ÇÁúÀûÀ¸·Î ½ÇÇàµÉ ÄÚµåµéÀÇ ¹À½ÀÔ´Ï´Ù
¿©±â¼´Â ¾Æ¹« taskµµ ¾ø½À´Ï´Ù
¨è build.properties¿¡ ´ÙÀ½À» ÀÔ·Â ÈÄ ÀúÀåÇÕ´Ï´Ù
catalina.home Àº º¯¼ö·Î »ç¿ëÇÒ °ÍÀÌ¸ç ±× °ªÀº C:\Tomcat 5.0ÀÔ´Ï´Ù
¨é ½ÇÇà
ÇØ´ç µð·ºÅ丮·Î À̵¿ÇÏ¿© µµ½ºÃ¢¿¡¼ ant ¶ó°í Ĩ´Ï´Ù
STEP 3. »çÀüÀÛ¾÷ Çϱâ~
À̹ø ´Ü°è¿¡¼´Â ÄÄÆÄÀÏ ÇϱâÀü Àü¿ªº¯¼ö ¼±¾ðÀ̳ª ÄÄÆÄÀÏ ½Ã Ŭ·¡½º Æнº ¼³Á¤À» Çغ¾½Ã´Ù
¨ç build.xml
-. project
À̹ø¿¡´Â default °ªÀ» prepare·Î ÇÏ¿´½À´Ï´Ù °í·Î targetÀº prepare°¡ ½ÇÇàµÉ °ÍÀÔ´Ï´Ù
-. property
¿ª½Ã³ª build.properties¸¦ Á¤ÀÇÇÏ¿´°í ¿©·¯ Àü¿ªº¯¼ö¸¦ ¼³Á¤ÇÏ¿´½À´Ï´Ù
build.home À̶õ º¯¼ö¿¡´Â ${basedir}/build °ªÀÌ Á¤ÀǵǾúÀ¸¸ç
build.homeÀº ${build.home}À¸·Î »ç¿ëÇÒ¼ö ÀÖ½À´Ï´Ù
±Ã±ÝÇϸé <echo message="${build.home}"/> µîÀ¸·Î Ãâ·ÂÇØ º¾½Ã´Ù~
-. path
${catalina.home} Àº build.properties¿¡¼ Á¤ÀÇÇÏ¿´´Ù´Â°ÍÀ» ±â¿ªÇϽǰ̴ϴÙ
filesetÀº ÆÄÀϵéÀÇ ÁýÇÕÀ» ³ªÅ¸³»´Âµ¥ ¾î¶² ƯÁ¤ÆÄÀϸ¸ Æ÷ÇÔ ÇÒ¼ö Àְųª ȤÀº ¾î´À ƯÁ¤ÆÄÀϸ¸ Á¦¿ÜÇÒ ¼ö ÀÖ½À´Ï´Ù
ƯÁ¤ÆÄÀϸ¸ Æ÷ÇÔÇϴ°ÍÀº include ű×ÀÌ¸ç ±× ¹Ý´ë´Â exclude ÀÔ´Ï´Ù
<fileset dir="${web.home}/WEB-INF/lib">
<include name="*.jar"/>
</fileset>
À̺κÐÀº ${web.home}/WEB-INF/lib ¿¡¼ *.jar ÆÄÀϸ¸ Ŭ·¡½ºÆнº·Î Àâ°Ú´Ù´Â ÀǹÌÀÔ´Ï´Ù
-. target
µåµð¾î ½ÇÁúÀûÀ¸·Î ½ÇÇàµÉ target ÀÔ´Ï´Ù.
project ¼Ó¼ºÀÇ default°¡ prepareÀ̹ǷΠprepare targetÀ¸·Î ½ÇÇàÇϱâ À§ÇØ °¡º¸´Ï depend ¼Ó¼ºÀ¸·Î "clean"ÀÌ ¼³Á¤µÇ¾î ÀÖ½À´Ï´Ù
ÀÌ°ÍÀº "clean" targetÀ» ¸ÕÀú ½ÇÇà ÈÄ prepare¸¦ ½ÇÇàÇ϶ó´Â ¸»ÀÔ´Ï´Ù
Áï prepare´Â cleanÀÌ ½ÇÇàÁ¶°Ç ÀÔ´Ï´Ù
clean targetÀº delete ű׸¦ ÀÌ¿ëÇÏ¿© ¹èÆ÷ÇÒ dist µð·ºÅ丮¿Í »êÃâ¹° µð·ºÅ丮ÀÎ build¸¦ »èÁ¦ÇÏ´Â ÀÛ¾÷ÀÔ´Ï´Ù
prepare targetÀ¸·Î ´Ù½Ã ¿Íº¸¸é mkdir ´Â ´ç¿¬È÷ µð·ºÅ丮¸¦ ¸¸µé¶ó´Â ¶æÀÔ´Ï´Ù
copy´Â todir¿¡ ´ÙÀ½ web.homeÀÇ ¸ðµç filesetÀ» copy Ç϶ó´Â ÀǹÌÀÔ´Ï´Ù ¿©±â¼µµ ¿ª½Ã³ª include, exclude°¡ »ç¿ëµÉ ¼ö ÀÖ°ÚÁö¿ä
<include name="**/*.jsp"/> ´Â ¸ðµçµð·ºÅ丮ÀÇ *.jsp ¸¦ Ä«ÇÇÇ϶ó´Â ÀǹÌÀÔ´Ï´Ù
Áï web µð·ºÅ丮ÀÇ ¸ðµç ½ÇÇà °¡´ÉÇÒ ÆÄÀÏÀ» build·Î ¿Å±â´Â ÀÛ¾÷ÀÔ´Ï´Ù
¨è ½ÇÇà
STEP 4. ÄÄÆÄÀÏ Çϱâ
ÀÌÁ¦ ÄÄÆÄÀÏÇÒ ¸ðµç Áغñ°¡ µÇ¾ú½À´Ï´Ù
STEP2ÀÇ ¼Ò½º¿¡ ´ÙÀ½ targetÀ» Ãß°¡ÇÏ°í projectÀÇ default °ªÀ» compile·Î ¼öÁ¤ÇÑ ÈÄ ½ÇÇàÇØ º¾½Ã´Ù
¨è ½ÇÇà
STEP 5. Javadoc À» ÀÌ¿ëÇØ API¸¦ ¸¸µé¾î º¸°í ¹èÆ÷ÆÄÀϵµ »ý¼ºÇØ º¸ÀÚ
ÀÌÁ¦ ÄÄÆÄÀϵµ ÇßÀ¸´Ï javadocµµ ¸¸µé¾î º¸°í war °°Àº ¹èÆ÷ÆÄÀϵµ »ý¼ºÇØ º¾½Ã´Ù
STEP 3.±îÁöÀÇ build.xml¿¡ ¾Æ·¡ targetÀ» ´õ Ãß°¡ÇÏ°í projectÀÇ default °ª¿¡ dist·Î ¼³Á¤ÇÕ´Ï´Ù
¨ç build.xml
-. target
targetÀÇ ½ÇÇà¼ø¼´Â clean, prpare, compile, javadoc, dist°¡ µÉ°Ì´Ï´Ù
javadoc targetÀÇ javadoc ŽºÆ®¸¦ º¸¸é java ¼Ò½º°¡ ÀÖ´Â ¼Ò½ºµð·ºÅ丮¿Í
API¸¦ »ý¼ºÇÒ Å¸°Ù µð·ºÅ丮¸¦ Á¤ÇØÁÖ¸é ¾Ë¾Æ¼ API¸¦ »ý¼ºÇØ ÁÝ´Ï´Ù
¸¸µé¾îÁø API´Â ¹èÆ÷¹öÁ¯ÀÇ distµð·ºÅ丮·Î ÇØÁÖ¸é ´õ ÁÁ°ÚÁö¿ä
dist targetÀº ¹èÆ÷ÆÄÀÏÀÎ war¸¦ ¸¸µì´Ï´Ù
ÇÊ¿äÇÑ ¹®¼°¡ ÀÖÀ¸¸é docs µð·ºÅ丮¸¦ ¸¸µé¾î ·Î º¹»çµµ Çϵµ·Ï ÇսôÙ
jar ŽºÅ©´Â À§ÀÇ ¹æ½Ä°ú °°ÀÌ »ç¿ëÇÕ´Ï´Ù
¨è ½ÇÇà
VI. Ant ½ÇÇà
¨ç C:\¿¹Á¦\ant -help
ant [options] [target [target2 [target3] ...]]
Options :
-help ÀÌ ¸Þ¼¼ÁöÀÇ Ç¥½Ã
-projecthelp ÇÁ·ÎÁ§Æ® µµ¿ò Á¤º¸ÀÇ Ãâ·Â
-version ¹öÀü Á¤º¸ÀÇ Ãâ·Â°ú Á¾·á
-diagnostics diagnose ³ª report ¹®Á¦¿¡ µµ¿òÀÌ µÇ´Â Á¤º¸ÀÇ Ãâ·Â.
-quiet, -q ÇÑÃþ ´õ ¸Þ¼¼Áö¸¦ Àû°Ô
-verbose, -v ÇÑÃþ ´õ ¸Þ¼¼Áö¸¦ ¸¹°Ô
-debug µð¹ö±× Á¤º¸ÀÇ Ãâ·Â
-emacs adornments ¾øÀÌ ·Î±× Á¤º¸ÀÇ »ý¼º(produce)
-logfile <file> ·Î±×¸¦ ÁöÁ¤ ÆÄÀÏ¿¡ Ãâ·Â
-l <file> ''
-logger <classname> ·Î±× »ý¼ºÀ» ½ÇÇàÇϱâ À§ÇÑ Å¬·¡½º
-listener <classname> ÇÁ·ÎÁ§Æ® ûÃëÀÚ(listener) ¿ªÇÒÀÇ classÀÇ ÀνºÅϽº¸¦ Ãß°¡
-buildfile <file> ÁöÁ¤µÈ ºôµå ÆÄÀÏÀÇ »ç¿ë
-file <file> ''
-f <file> ''
-D<property>=<value> ÁöÁ¤µÈ ÇÁ·ÎÆÛƼÀÇ °ªÀÇ »ç¿ë
-propertyfile <name> ¸ðµç ÇÁ·ÎÆÛƼ¸¦ ÆÄÀϷκÎÅÍ ·Îµå (-DÇÁ·ÎÆÛƼº¸´Ù Àü¿¡)
-inputhandler <class> ÀÔ·Â ¿äû(requests)¸¦ Ãë±ÞÇϴ Ŭ·¡½º
-find <file> ÆÄÀϽýºÅÛÀÇ ·çÆ®·Î ÇâÇØ ºôµåÆÄÀÏÀ» °Ë»öÇÏ°í ±×°ÍÀ» »ç¿ë
¨è C:\¿¹Á¦\ant
ÇöÀç µð·ºÅ丮¿¡ ÀÖ´Â build.xml
ÆÄÀÏÀ» ÀÌ¿ëÇØ, µðÆúÆ® Ÿ°ÙÀ¸·Î Ant ¸¦ ½ÇÇàÇÕ´Ï´Ù.
¨é C:\¿¹Á¦\ant compile
ÇöÀç µð·ºÅ丮¿¡ ÀÖ´Â build.xmlÀÌ ½ÇÇàµÇ¸ç ÆĶó¹ÌÅÍ·Î compileÀ» ÁöÁ¤Çϸé projectÀÇ default °ªÀ» ¹«½ÃÇÏ°í compile targetÀ» ½ÇÇàÇÕ´Ï´Ù ¹°·Ð depends °¡ ÀÖ´Ù¸é ¸ÕÀú ½ÇÇàÇÕ´Ï´Ù
¨ê C:\¿¹Á¦\ant -buildfile test.xml
ÇöÀç µð·ºÅ丮¿¡ ÀÖ´Â test.xml
ÆÄÀÏÀ» ÀÌ¿ëÇØ, µðÆúÆ® Ÿ°ÙÀ¸·Î Ant ¸¦ ½ÇÇàÇÕ´Ï´Ù.
¨ë C:\¿¹Á¦\ant -buildfile test.xml dist
ÇöÀç µð·ºÅ丮¿¡ ÀÖ´Â test.xml
ÆÄÀÏÀ» ÀÌ¿ëÇØ, dist
¶ó´Â À̸§ÀÇ Å¸°ÙÀ¸·Î Ant ¸¦ ½ÇÇàÇÕ´Ï´Ù.
¨ì C:\¿¹Á¦\ant -buildfile test.xml -Dbuild=build/classes dist
ÇöÀç µð·ºÅ丮¿¡ ÀÖ´Â test.xml
ÆÄÀÏÀ» ÀÌ¿ëÇØ, dist
¶ó´Â À̸§ÀÇ Å¸°ÙÀ¸·Î, build
ÇÁ·ÎÆÛƼ¿¡ build/classes
°ªÀ» ¼³Á¤ÇØ Ant ¸¦ ½ÇÇàÇÕ´Ï´Ù.
VII. ±âº» ÇÁ·ÎÆÛƼ
Ant´Â ´ÙÀ½°ú °°Àº ÇÁ·ÎÆÛƼ¸¦ ±âº»À¸·Î Á¦°øÇÕ´Ï´Ù
¨ç basedir : ±âº» µð·ºÅ丮 °æ·Î¸¦ ³ªÅ¸³»¸ç project ű×ÀÇ basedir¿¡ ¸í½ÃµÇ¾î ÀÖ½À´Ï´Ù
¨è ant.file : ºôµå ÆÄÀÏÀÇ Àý´ë °æ·ÎÀÔ´Ï´Ù
¨é ant.version : Ant ¹öÁ¯À» ³ªÅ¸³À´Ï´Ù
¨ê ant.project.name : project ű×ÀÇ name¿¡ ¸í½ÃµÇ¾îÀÖ½À´Ï´Ù
¨ë ant.java.version : ÀÚ¹Ù ¹öÁ¯À» ³ªÅ¸³À´Ï´Ù
¨ì ÀÚ¹Ù ½Ã½ºÅÛ ÇÁ·ÎÆÛƼ¸¦ »ç¿ë °¡´É ÇÕ´Ï´Ù
¿¹) ${os.name} Âü°í http://java.sun.com/j2se/1.4.2/docs/api/java/lang/System.html#getProperties()
<echo message="${ant.file}"/> À¸·Î Çѹø Ãâ·ÂÇØ º¸¸é ÀÌÇØ°¡ ½±½À´Ï´Ù
´ÙÀ½ ½Ã°£¿¡´Â °¢ Ÿ½ºÅ©ÀÇ Á¾·ù¿Í »ó¼¼ ¼³Á¤¿¡ °üÇØ ¾Ë¾Æº¾½Ã´Ù
=============================================
º»¹®¼´Â ÀÚÀ¯·Ó°Ô ¹èÆ÷/º¹»ç ÇÒ¼ö ÀÖÁö¸¸
À̹®¼ÀÇ ÀúÀÚ¿¡ ´ëÇÑ ¾ð±ÞÀ» »èÁ¦ÇÏ½Ã¸é ¾ÈµË´Ï´Ù
ÀúÀÚ : GoodBug (unicorn@jakartaproject.com)
ÃÖÃÊ : http://www.jakartaproject.com
=============================================