古之成大事者,不唯有超世之才,亦唯有堅(jiān)韌不拔之志也!

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            3 隨筆 :: 44 文章 :: 1 評論 :: 0 Trackbacks
          ant 是apache 工程的一個(gè)子工程,是一個(gè)基于java的build工具。ant類似于make工具,但沒有傳統(tǒng)的make工具的缺點(diǎn)。傳統(tǒng)的make往往只能限制在某一平臺(tái)上使用,ant本身用java類實(shí)現(xiàn),要構(gòu)建的工程的配置文件用xml格式描述,可以很方便實(shí)現(xiàn)多平臺(tái)編譯,非常適合build大型工程。

          1.安裝配置ant:
          ant 可以從http://ant.apache.org下載,目前最新版本為1.5.2。下載完畢后直接解壓縮,目錄如下:
          ant 
          +-- bin // contains launcher scripts
          |
          +-- lib // contains Ant jars plus necessary dependencies
          |
          +-- docs // contains documentation
          |    +-- ant2 // a brief description of ant2 requirements
          |    |
          |    +-- images // various logos for html documentation
          |    |
          |    +-- manual // Ant documentation (a must read )
          |
          +-- etc 

          需要設(shè)置的環(huán)境變量:
          ANT_HOME:ant的安裝目錄
          JAVA_HOME:jdk的安裝目錄
          PATH:把%ANT_HOME%"bin目錄加到path變量,以便于從命令行下直接運(yùn)行ant

          假定ant裝在c:"ant   jdk裝d:"j2sdk1.4.0
          則在命令行下執(zhí)行以下命令:
          set ANT_HOME=c:"ant
          set JAVA_HOME=D:"j2sdk1.4.0
          set PATH=%PATH%;c:"ant"bin

          win2000命令提示符下工作時(shí),每次都必須進(jìn)行上面的設(shè)置,退出命令提示符后,這些變量的值又會(huì)恢復(fù)成原來的樣子。為了避免這些麻煩,可以在 控制面板"系統(tǒng)"高級"環(huán)境變量 中設(shè)置。

          上述設(shè)置完成后,就可以使用ant了。

          2.建立工程描述文件build.xml
          用ant編譯規(guī)模較大的工程非常方便,每個(gè)工程都對應(yīng)一個(gè)build.xml文件,這個(gè)文件包含與這個(gè)工程有關(guān)的路徑信息和任務(wù)。下面是一個(gè)build.xml的例子:

          <project name="logon" basedir="." default="dist">

          <property name="dist.name" value="struts_demo"/>
          <property name="src" location="src"/>
          <property name="build" location="WEB-INF/classes"/>
          <property name="dist" location="D:/tomcat/webapps/dist"/>

          <!-- Build working classpath -->
          <path id="project.class.path">
          <pathelement path ="WEB-INF/lib/struts.jar"/>
          <pathelement path ="WEB-INF/classes"/>
          <pathelement path ="${classpath}"/>
          </path>

          <target name="init">
          <tstamp/>
          <!-- Create the build directory structure used by compile -->
          <delete dir="${dist}"/>
          </target>

          <target name="compile" depends="init">
          <javac srcdir="${src}" destdir="${build}">
          <classpath refid="project.class.path"/>
          </javac> 
          </target>

          <!-- Build binary distribution -->
          <target name="dist" depends="compile"
          description="Create binary distribution">
          <mkdir dir="${dist}"/>
          <war destfile="${dist}/${dist.name}.war"
          webxml="WEB-INF/web.xml">
          <lib dir="WEB-INF/lib"/>
          <classes dir="WEB-INF/classes"/>
          <fileset dir="${basedir}"/>
          </war>
          </target>

          </project>

          要構(gòu)建的工程目錄如下:
          struts_demo
          +--jsp
          |
          +--src
          |
          +--WEB-INF
          |  +--classes
          |  |
          |  +--lib
          |  |
          |  +--web.xml
          |
          +--build.xml

          每個(gè)build.xml文件都包含一個(gè)project和至少一個(gè)target。target包含任務(wù)元素,任務(wù)是一段可執(zhí)行代碼,每個(gè)任務(wù)元素都有一個(gè)id屬性,以便于在文件中引用。ant有內(nèi)置任務(wù)集可供使用,如上面文件中用到的property、javac和war,分別完成設(shè)置屬性、編譯和打包任務(wù)。當(dāng)然如果需要的話也可以寫自己的任務(wù)。

          build.xml 的根元素是progject,它有三個(gè)屬性name default basedir,其中default是必需的。name指定工程的名 字,basedir表示工程的基路徑,設(shè)置為"."表示build.xml所在的路徑。default表示默認(rèn)的target,運(yùn)行ant時(shí)如果不指定 target,則用default指定的target.

          property任務(wù)用來設(shè)置屬性,一個(gè)工程可以設(shè)置很多屬性,屬性有名字和值,屬性設(shè)置后可以在后面引用。

          <property name="dist.name" value="struts_demo"/>設(shè)置一個(gè)名字為dist.name的屬性,其值為struts_demo,后面使用時(shí)用${dist.name}引用,表示字符串struts_demo.

          <property name="src" location="src"/& gt;設(shè)置一個(gè)名字為src的屬性,它的值是一個(gè)路徑,用location設(shè)置。如果location內(nèi)容以/或"或D:" C:"之類開始,表示絕對路 徑,否則表示相對路徑,相對于project中設(shè)置的basedir.

          使用path或classpath可以設(shè)置類的路徑,后面引用時(shí)用id設(shè)置的值

          構(gòu)建工程最常用的ant內(nèi)置任務(wù):
          mkdir:    創(chuàng)建目錄,dir=要?jiǎng)?chuàng)建的目錄
          delete:    刪除文件文件夾 dir=要?jiǎng)h除的文件文件
          javac:     編譯java文件java文件放在srcdir指定的文件夾中,生成的.class文件按照 package語句組織目錄,存放在destdir指定的文件夾中。要注意源文件的目錄組織要與package語句相一致
          war:        為web應(yīng)用程序打包,destfile指定打包后生成的文件名,webxml指定所用的web.xml文件。<fileset dir="${basedir}"/>將basedir目錄下所有的文件也放在包中

          上面的build.xml例子中,target中的屬性depends表示在執(zhí)行本target之前必須要做的target,
          例如dist 的depends=compile,意思是在用dist打包之前必須先用compile編譯。這樣當(dāng)執(zhí)行dist時(shí)首先執(zhí)行compile


          3.運(yùn)行ant:
          使用ant.bat可以直接運(yùn)行ant,如果不帶任何參數(shù),ant會(huì)在當(dāng)前路徑下搜索build.xml文件,如果找到,就運(yùn)行project的default指定的target.也可以帶參數(shù)來選擇build.xml文件和要運(yùn)行的target

          對于上面的例子,假定build.xml所在的目錄為D:"struts_demo" ,則下面三種執(zhí)行方式效果是一樣的:
              1.   cd d:"struts_demo
                   ant
              2.   ant -buildfile d:"struts_demo"build.xml
              3.   ant -buildfile d:"struts_demo"build.xml    dist

          如果執(zhí)行ant -buildfile d:"struts_demo"build.xml  compile,則執(zhí)行compile target

          有關(guān)ant使用和build.xml文件內(nèi)容,在ant的manual中有詳細(xì)的描述。
          posted on 2008-11-14 10:23 goto 閱讀(113) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 祁门县| 贵南县| 龙门县| 离岛区| 普定县| 芜湖市| 宁明县| 两当县| 桦川县| 鱼台县| 锦屏县| 山阳县| 尼勒克县| 唐海县| 诸暨市| 南投县| 靖远县| 田林县| 井研县| 永丰县| 灵武市| 金堂县| 滁州市| 墨竹工卡县| 界首市| 股票| 莱阳市| 扶风县| 新巴尔虎右旗| 北辰区| 虎林市| 四会市| 沙湾县| 牙克石市| 阳东县| 永顺县| 安岳县| 剑阁县| 云阳县| 冷水江市| 贺州市|