qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          Ant構(gòu)建Java項目之第1篇

            Ant可以代替使用javac、java和jar等命令來執(zhí)行java操作,從而達(dá)到輕松的構(gòu)建和部署Java工程的目的。下面來看幾個知識點。
            1.project元素
            project元素是Ant構(gòu)件文件的根元素,Ant構(gòu)件文件至少應(yīng)該包含一個project元素,否則會發(fā)生錯誤。在每個project元素下,可包含多個target元素。接下來向讀者展示一下project元素的各屬性。
            1)name屬性
            用于指定project元素的名稱。
            2)default屬性
            用于指定project默認(rèn)執(zhí)行時所執(zhí)行的target的名稱。
            3)basedir屬性
            用于指定基路徑的位置。該屬性沒有指定時,使用Ant的構(gòu)件文件的附目錄作為基準(zhǔn)目錄。
            2.target元素
            它為Ant的基本執(zhí)行單元,它可以包含一個或多個具體的任務(wù)。多個target可以存在相互依賴關(guān)系。它有如下屬性:
            1)name屬性
            指定target元素的名稱,這個屬性在一個project元素中是唯一的。我們可以通過指定target元素的名稱來指定某個target。
            2)depends屬性
            用于描述target之間的依賴關(guān)系,若與多個target存在依賴關(guān)系時,需要以“,”間隔。Ant會依照depends屬性中target出現(xiàn)的順序依次執(zhí)行每個target。被依賴的target會先執(zhí)行。
            3)if屬性
            用于驗證指定的屬性是否存在,若不存在,所在target將不會被執(zhí)行。
            4)unless屬性
            該屬性的功能與if屬性的功能正好相反,它也用于驗證指定的屬性是否存在,若不存在,所在target將會被執(zhí)行。
            5)description屬性
            該屬性是關(guān)于target功能的簡短描述和說明。
            3.property元素
            該元素可看作參量或者參數(shù)的定義,project的屬性可以通過property元素來設(shè)定,也可在Ant之外設(shè)定。若要在外部引入某文件,例如build.properties文件,可以通過如下內(nèi)容將其引入:<property file=” build.properties”/>
            property元素可用作task的屬性值。在task中是通過將屬性名放在“${”和“}”之間,并放在task屬性值的位置來實現(xiàn)的。
            Ant提供了一些內(nèi)置的屬性,它能得到的系統(tǒng)屬性的列表與Java文檔中System.getPropertis()方法得到的屬性一致。
            同時,Ant還提供了一些它自己的內(nèi)置屬性,如下:
            basedir:project基目錄的絕對路徑,該屬性在講解project元素時有詳細(xì)說明,不再贅述;
            ant.file:buildfile的絕對路徑,如上面的各例子中,ant.file的值為E:"build.xml;
            ant.version:Ant的版本,在本文中,值為1.7.0;
            ant.project.name:當(dāng)前指定的project的名字,即前文說到的project的name屬性的值;
            ant.java.version:Ant檢測到的JDK的版本,在上例運行結(jié)果中可看到為1.5。
            下面來看具體的實例。
            1.利用Ant的javac任務(wù)來編譯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文件,結(jié)果如下:
          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任務(wù)運行Java程序
            Ant中可以使用java任務(wù)實現(xiàn)運行Java程序的功能。下面在1的例子中進行如下的修改,修改后的build.xml文件的內(nèi)容如下:
          <?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任務(wù)打包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 閱讀(174) 評論(0)  編輯  收藏 所屬分類: 測試學(xué)習(xí)專欄

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

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 灵川县| 罗定市| 乡宁县| 鹤山市| 万年县| 康乐县| 荆门市| 铜山县| 广元市| 慈溪市| 凤凰县| 白银市| 贵溪市| 望江县| 新郑市| 越西县| 噶尔县| 西畴县| 宜川县| 松潘县| 和硕县| 大兴区| 辰溪县| 将乐县| 丰台区| 清新县| 合肥市| 财经| 渭南市| 永顺县| 中西区| 侯马市| 南雄市| 黄陵县| 乌拉特中旗| 胶南市| 龙州县| 三原县| 迭部县| 左贡县| 渝北区|