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

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            3 隨筆 :: 44 文章 :: 1 評論 :: 0 Trackbacks
          ant 是apache 工程的一個子工程,是一個基于java的build工具。ant類似于make工具,但沒有傳統的make工具的缺點。傳統的make往往只能限制在某一平臺上使用,ant本身用java類實現,要構建的工程的配置文件用xml格式描述,可以很方便實現多平臺編譯,非常適合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 

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

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

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

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

          2.建立工程描述文件build.xml
          用ant編譯規模較大的工程非常方便,每個工程都對應一個build.xml文件,這個文件包含與這個工程有關的路徑信息和任務。下面是一個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>

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

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

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

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

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

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

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

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

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


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

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

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

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

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


          網站導航:
           
          主站蜘蛛池模板: 沙坪坝区| 宣武区| 山阴县| 蓬安县| 延安市| 宁津县| 城市| 乌兰察布市| 绥阳县| 乌恰县| 葫芦岛市| 竹溪县| 剑阁县| 崇左市| 黄梅县| 临海市| 信丰县| 兰溪市| 洪泽县| 桓台县| 宁海县| 吐鲁番市| 蓬溪县| 五大连池市| 临武县| 菏泽市| 宁河县| 贺州市| 中阳县| 萨迦县| 建始县| 安宁市| 新郑市| 电白县| 离岛区| 海兴县| 赫章县| 安龙县| 云阳县| 温泉县| 青海省|