Apache Ant 使用基礎

1.環境

在正式開始編寫腳本之前,我們需要下載安裝相應的軟件。

  • Eclipse:爲了使 Ant 的開發更加簡單,我們選擇了 Eclipse3.1 作爲開發環境。當然你可以使用任何你喜歡的文本編輯工具來開發你的 Ant。Eclipse 的最新版本可以在 http://eclipse.org/ 上下載。
  • Ant:Ant 是基於 Java 的編譯工具,它就像 C/C++ 中的 make,但是沒有 make 那樣難用。Ant 的最新版本可以在 http://ant.apache.org/bindownload.cgi 上下載。如果你用 Eclipse 來開發 Ant,則不用去單獨下載 Ant,因爲在 Eclipse 中已經集成了 Ant。
2.1 基本語法
每個生成文件由單個 project 元素組成,該元素又包含一個或多個 target 元素。一個目標(target)是生成過程中已定義的一個步驟,它執行任意數量的操作,比如編譯一組源文件。
頂級 project 元素需要包含一個 default 屬性,如果在 Ant 被調用時沒有指定目標,這個屬性將指定要執行的目標。然後需要使用 target 元素來定義該目標本身。下面是一個最基本的生成文件:
<?xml version="1.0"?>
<project default="init" name="Project Name">
     
<description>
        A simple project introducing the use of descriptive tags in Ant build files.
    
</description>

    
<!-- XML comments can also be used -->
    
<target name="init" description="Initialize database">
        
<!-- perform initialization steps here -->
    
</target>
</project>

2.2 屬性
Ant 中的屬性 類似編程語言中的變量,它們都具有名稱和值。然而與通常的變量不同,一經設置,Ant 中的屬性就不可更改;它們是不可變的,就像 Java 語言中的 String 對象。
 

爲了在生成文件的其他部分引用這個屬性,您會使用以下語法:


Ant 中有許多預定義的屬性,Java 環境設置用於運行 Ant 的所有系統屬性,均可作爲 Ant 屬性使用,比如 ${user.home}

2.3 屬性文件(properties)
在上面的例子中,所有的路徑信息都是寫在 build.xml 中。但是 Ant 腳本可能在不同的機器或者不同的系統上運行,也有可能一些值需要根據環境的不同而變化,在 Ant 中可以把所有這些可能變化的地方都放到一個配置文件中,然後在 Ant 腳本中引用這個配置文件就可以了,如下所示:
<project name="testBuild" default="compile" basedir=".">
    
<property file="build.properties"/>
    
<target name="init">
        
<mkdir dir="${dest.dir}" />
    
</target>
    
<target name="compile" depends="init">
        
<javac srcdir="${src.dir}" destdir="${dest.dir}"/>
        
<echo>Build into ${dest.dir}, successfully.</echo>
    
</target>
</project>
build.properties的內容:
dest.dir=c:/temp/dest/testProj
src.dir=c:/temp/src/testProj

2.4 依賴關係

生成一個項目一般需要許多步驟 —— 例如首先要編譯源代碼,然後將它打包爲 Java 歸檔文件(Java Archive File,JAR)。這其中許多步驟都具有清楚定義的順序。每個目標的定義依據的是在它在能夠執行之前必須完成的其他所有目標。這是使用 target 元素的 depends 屬性來實現的。
<target name="init"/>
<target name="preprocess" depends="init"/>
<target name="compile" depends="init,preprocess"/>
<target name="package" depends="compile"/>

2.5 命令行執行

-buildfile <file>
參數(-f <file> 是其簡寫形式)。

2.6 綜合
下面將把這些代碼片斷組合成一個完整的生成文件,它將編譯 src 目錄下的所有源代碼,將結果類文件放在 build 目錄下,然後把所有類文件打包到 dist 目錄中的一個 JAR 文件中。
<?xml version="1.0"?>
<project default="dist" name="Project Argon">
     
<description>A simple Java project</description>  

    
<property name="srcDir" location="src"/>
    
<property name="buildDir" location="build"/>
    
<property name="distDir" location="dist"/>

    
<target name="init">
       
<tstamp/>
       
<mkdir dir="${buildDir}"/>
       
<mkdir dir="${distDir}"/>
    
</target>

    
<target name="compile" depends="init">
       
<javac srcdir="${srcDir}" destdir="${buildDir}"/>
    
</target>

    
<target name="dist" depends="compile">
       
<jar destfile="${distDir}/package-${DSTAMP}.jar" basedir="${buildDir}">
         
<manifest>
           
<attribute name="Built-By" value="${user.name}"/>
           
<attribute name="Main-Class" value="package.Main"/>
         
</manifest>
       
</jar>
       
<jar destfile="${distDir}/package-src-${DSTAMP}.jar" basedir="${srcDir}"/>
    
</target>

    
<target name="clean">
      
<delete dir="${buildDir}"/>
      
<delete dir="${distDir}"/>
    
</target>
</project>
 

注意 JAR 文件是根據當前日期來命名的,並且爲應用程序的主類設置了一個清單條目,以便主類能夠通過一個簡單的命令 java -jar package-20031217.jar 來直接運行。我們還創建了一個 JAR 文件,它僅包含項目的源代碼。

2.7 創建和刪除目錄
創建: <mkdir dir="archive/metals/zinc"/>
刪除: <delete dir="archive/metals/zinc"/>
刪除指定的目錄連同它包含的所有文件以及子目錄。
拷貝:  <copy file="src/Test.java" tofile="src/TestCopy.java"/>

2.8 模式匹配
<copy todir="archive">
  
<fileset dir="src">
    
<include name="*.java"/>
  
</fileset>
</copy>
如果我們想要使用一個模式,可以將 file 屬性替換爲一個 fileset 元素,如下所示:

fileset
默認情況下包含指定 src 目錄下的所有文件,因此爲了僅選擇 Java 文件,我們對模式使用一個 include 元素。類似地,我們可以對另一個模式添加一個 exclude 元素,從而潛在地排除include指定的匹配項。甚至可以指定多個includeexclude 元素;這樣將得到一組文件和目錄,它們包含 include 模式的所有匹配項的並集,但排除了 exclude 模式的所有匹配項。

參考IBM ANT使用教程
IBM教程: https://www6.software.ibm.com/developerworks/cn/education/java/j-apant/tutorial/j-apant.zip 

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章