Ant的安裝與使用

下載與安裝

  • 在ant.apache.org可以找到下載的界面,根據推薦下載1.10.1的版本。
  • 解壓到安裝目錄,解壓後的目錄有manual文件夾,包含Ant工具相關文檔。
  • ant的運行需要JAVA_HOME環境變量指向jdk,以及ANT_HOME的環境變量指向Ant的安裝路徑。需要識別ant.bat命令,還需要吧%ANT_HOME%\bin 加到Path環境變量中。
  • 使用ant工具只要輸入ant或者ant.bat,Ant會在目錄下搜索build.xml文件,作爲生成文件執行默認的target。
  • 使用-s 或者-find ,Ant會在上級目錄中搜索生成文件,直到到達文件系統根目錄。
  • ant也可以使用-buildfile使用其他文件作爲生成文件,這裏的-buildfile也可以使用-file或者-f代替。如下:
ant -f a.xml
ant -file b.xml
  • ant運行只提示少量信息:-quite或者-q
  • ant運行提示更多信息:-verbose或者-v
  • ant運行將提示信息輸出到指定文件,而不是直接輸出到控制檯,-logfile 或者-l,例如:
ant -verbose -l a.log  //運行ant時生成更多提示信息,並將信息輸出到a.log中
  • 使用類似-D=可以將指定value來覆蓋property的屬性值。
ant -Dbook=Spring4 //覆蓋生成文件中的book屬性
ant -Denvl=%ANT_HOME%   //這樣可以使用Windows的環境變量,在生成文件中,可以使用$envl來訪問該環境變量的值
  • ant -help獲取幫助文檔

  • 典型的項目層次結構:

<priject>
    -src:源文件、配置文件
    -classes:編譯後的class文件
    -lib:第三方jar包
    -dist:存放項目打包、項目發佈文件的文件夾
    build.xml:Ant生成文件
  • Ant生成文件的根元素是project,每個項目下可以定義多個生成目標,每個目標使用target元素來定義。project元素的屬性包括:
屬性 含義
default 默認target
basedir 指定項目的基準路徑
name 項目名
description 項目描述信息



  • target元素的屬性
屬性 含義
name target名稱
depends 指定一個或多個target,表示運行該target之前需要運行的target
if 指定一個屬性名,表示僅當設置了該屬性才執行該target
unless 設置一個屬性名,表示僅當沒有設置該屬性才執行該target
description 描述信息


  • 每個生成目標(target)可以對應一個或多個任務序列,如:<name attribute1="value1" attribuute2="value2">name爲任務的名稱,attribute和value爲執行該任務需要的屬性名與屬性值。

以下是一份《輕量級JAVAEE 企業應用實戰的》的生成文件:

<?xml version="1.0" encoding="GBK"?>
<!-- 定義生成文件的project根元素,默認的target爲空 -->
<project name="antQs" basedir="." default="">
    <!-- 定義三個簡單屬性 -->
    <property name="src" value="src"/>
    <property name="classes" value="classes"/>
    <property name="dest" value="dest"/>
    <!-- 定義一組文件和目錄集 -->
    <path id="classpath">
        <pathelement path="${classes}"/>
    </path>
    <!-- 定義help target,用於輸出該生成文件的幫助信息 -->
    <target name="help" description="打印幫助信息">
        <echo>help - 打印幫助信息</echo>
        <echo>compile - 編譯Java源文件</echo>
        <echo>run - 運行程序</echo>
        <echo>build - 打包JAR包</echo>
        <echo>clean - 清除所有編譯生成的文件</echo>
    </target>
    <!-- 定義compile target,用於編譯Java源文件 -->
    <target name="compile" description="編譯Java源文件">
        <!-- 先刪除classes屬性所代表的文件夾 -->
        <delete dir="${classes}"/>
        <!-- 創建classes屬性所代表的文件夾 -->
        <mkdir dir="${classes}"/>
        <!-- 編譯Java文件,編譯後的class文件放到classes屬性所代表的文件夾內 -->
        <javac destdir="${classes}" debug="true" includeantruntime="yes"
            deprecation="false" optimize="false" failonerror="true">
            <!-- 指定需要編譯的Java文件所在的位置 -->
            <src path="${src}"/>
            <!-- 指定編譯Java文件所需要第三方類庫所在的位置 -->
            <classpath refid="classpath"/>
        </javac>
    </target>
    <!-- 定義run target,用於運行Java源文件,
        運行該target之前會先運行compile target -->
    <target name="run" description="運行程序" depends="compile">
        <!-- 運行lee.HelloTest類,其中fork指定啓動另一個JVM來執行java命令 -->
        <java classname="lee.HelloTest" fork="yes" failonerror="true">
            <classpath refid="classpath"/>
            <!-- 運行Java程序時傳入2個參數 -->
            <arg line="測試參數1 測試參數2"/>
        </java>
    </target>
    <!-- 定義build target,用於打包JAR文件,
        運行該target之前會先運行compile target -->
    <target name="build" description="打包JAR文件" depends="compile">
        <!-- 先刪除dest屬性所代表的文件夾 -->
        <delete dir="${dest}"/>
        <!-- 創建dest屬性所代表的文件夾 -->
        <mkdir dir="${dest}"/>
        <!-- 指定將classes屬性所代表的文件夾下的所有
            *.classes文件都打包到app.jar文件中 -->
        <jar destfile="${dest}/app.jar" basedir="${classes}"
            includes="**/*.class">
            <!-- 爲JAR包的清單文件添加屬性 -->
            <manifest>
                <attribute name="Main-Class" value="lee.HelloTest"/>
            </manifest>
        </jar>
    </target>
    <!-- 定義clean target,用於刪除所有編譯生成的文件 -->
    <target name="clean" description="清除所有編譯生成的文件">
        <!-- 刪除兩個目錄,目錄下的文件也一併刪除 -->
        <delete dir="${classes}"/>
        <delete dir="${dest}"/>
    </target>
</project>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章