qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          Ant構建Java項目之第1篇

            Ant可以代替使用javac、java和jar等命令來執行java操作,從而達到輕松的構建和部署Java工程的目的。下面來看幾個知識點。
            1.project元素
            project元素是Ant構件文件的根元素,Ant構件文件至少應該包含一個project元素,否則會發生錯誤。在每個project元素下,可包含多個target元素。接下來向讀者展示一下project元素的各屬性。
            1)name屬性
            用于指定project元素的名稱。
            2)default屬性
            用于指定project默認執行時所執行的target的名稱。
            3)basedir屬性
            用于指定基路徑的位置。該屬性沒有指定時,使用Ant的構件文件的附目錄作為基準目錄。
            2.target元素
            它為Ant的基本執行單元,它可以包含一個或多個具體的任務。多個target可以存在相互依賴關系。它有如下屬性:
            1)name屬性
            指定target元素的名稱,這個屬性在一個project元素中是唯一的。我們可以通過指定target元素的名稱來指定某個target。
            2)depends屬性
            用于描述target之間的依賴關系,若與多個target存在依賴關系時,需要以“,”間隔。Ant會依照depends屬性中target出現的順序依次執行每個target。被依賴的target會先執行。
            3)if屬性
            用于驗證指定的屬性是否存在,若不存在,所在target將不會被執行。
            4)unless屬性
            該屬性的功能與if屬性的功能正好相反,它也用于驗證指定的屬性是否存在,若不存在,所在target將會被執行。
            5)description屬性
            該屬性是關于target功能的簡短描述和說明。
            3.property元素
            該元素可看作參量或者參數的定義,project的屬性可以通過property元素來設定,也可在Ant之外設定。若要在外部引入某文件,例如build.properties文件,可以通過如下內容將其引入:<property file=” build.properties”/>
            property元素可用作task的屬性值。在task中是通過將屬性名放在“${”和“}”之間,并放在task屬性值的位置來實現的。
            Ant提供了一些內置的屬性,它能得到的系統屬性的列表與Java文檔中System.getPropertis()方法得到的屬性一致。
            同時,Ant還提供了一些它自己的內置屬性,如下:
            basedir:project基目錄的絕對路徑,該屬性在講解project元素時有詳細說明,不再贅述;
            ant.file:buildfile的絕對路徑,如上面的各例子中,ant.file的值為E:"build.xml;
            ant.version:Ant的版本,在本文中,值為1.7.0;
            ant.project.name:當前指定的project的名字,即前文說到的project的name屬性的值;
            ant.java.version:Ant檢測到的JDK的版本,在上例運行結果中可看到為1.5。
            下面來看具體的實例。
            1.利用Ant的javac任務來編譯java程序
            其中build.xml文件的源碼如下:
          <?xml version="1.0"?>
          <project name="javacTest" default="compile" basedir=".">
          <target name="clean">
          <delete dir="build"/>
          </target>
          <target name="compile" depends="clean">
          <mkdir dir="build/classes"/>
          <javac srcdir="src" destdir="build/classes"/>
          </target>
          </project>
           運行該build.xml文件,結果如下:
          Buildfile: Z:\vAccess_myeclipse\TestAnt\build.xml
          clean:
          compile:
          [mkdir] Created dir: Z:\vAccess_myeclipse\TestAnt\build\classes
          [javac] Z:\vAccess_myeclipse\TestAnt\build.xml:9: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
          [javac] Compiling 1 source file to Z:\vAccess_myeclipse\TestAnt\build\classes
          BUILD SUCCESSFUL
          Total time: 2 seconds
            2.使用Ant的java任務運行Java程序
            Ant中可以使用java任務實現運行Java程序的功能。下面在1的例子中進行如下的修改,修改后的build.xml文件的內容如下:
          <?xml version="1.0"?>
          <project name="javaTest" default="run" basedir=".">
          <target name="clean">
          <delete dir="build"/>
          </target>
          <target name="compile" depends="clean">
          <mkdir dir="build/classes"/>
          <javac srcdir="src" destdir="build/classes"/>
          </target>
          <target name="run" depends="compile">
          <java classname="com.ant.test01.Test01">
          <classpath>
          <pathelement path="build/classes"/>
          </classpath>
          </java>
          </target>
          </project>
            可以看到在控制臺的輸出:
            ...
            [java] Hello,Amigo
            ...
            3. 使用Ant的war任務打包J2EE Web項目
            配置文件源碼如下:
          <?xml version="1.0"?>
          <project name="antwebproject" default="war" basedir=".">
          <property name="classes" value="build/classes" />
          <property name="build" value="build" />
          <property name="lib" value="WebRoot/WEB-INF/lib" />
          <!-- 刪除build路徑-->
          <target name="clean">
          <delete dir="build" />
          </target>
          <!-- 建立build/classes路徑,并編譯class文件到build/classes路徑下-->
          <target name="compile" depends="clean">
          <mkdir dir="${classes}" />
          <javac srcdir="src" destdir="${classes}" />
          </target>
          <!-- 打war包-->
          <target name="war" depends="compile">
          <war destfile="${build}/TestAnt.war" webxml="WebRoot/WEB-INF/web.xml">
          <!-- 拷貝WebRoot下除了WEB-INF和META-INF的兩個文件夾-->
          <fileset dir="WebRoot" includes="**/*.jsp" />
          <!-- 拷貝lib目錄下的jar包-->
          <lib dir="${lib}" />
          <!-- 拷貝build/classes下的class文件-->
          <classes dir="${classes}" />
          </war>
          </target>
          </project>

          posted on 2014-05-20 10:24 順其自然EVO 閱讀(175) 評論(0)  編輯  收藏 所屬分類: 測試學習專欄

          <2014年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 永兴县| 凤冈县| 兴城市| 西乌| 闽清县| 黄骅市| 筠连县| 库伦旗| 德兴市| 西吉县| 北辰区| 虎林市| 昌乐县| 宾阳县| 英德市| 甘孜县| 茂名市| 四川省| 筠连县| 孟津县| 徐汇区| 万年县| 平乡县| 恭城| 广南县| 高要市| 青浦区| 宣威市| 平阳县| 扶余县| 临夏市| 灵宝市| 偃师市| 和静县| 鄢陵县| 定安县| 墨玉县| 伊宁县| 中卫市| 深州市| 衡水市|