Java構建工具Ant之第一個build.xml

IT_xiao小巫發表於2015-04-01

ANT是一個構建工具,它有跨平臺、操作簡單、安裝簡單、佔用資源少等特點,它只有一個配置檔案build.xml,我們要做的事情就是在build.xml中去定義我們想要做的事情,ANT它本身有很多命令和語法,筆者剛接觸時也是比較頭大,後面慢慢去學習查詢,基本上了解了整個build.xml包含的內容,最好的學習辦法就是檢視例子,通過例子去熟悉不同標籤裡面的屬性和引數的含義,我們不需要全部都要記住,只要在使用的時候知道如何去查詢即可。

下面來構建我們第一個build.xml檔案,這只是簡單的開始:

在D:/test/ant/src下建立HelloWorld.java檔案

package test.ant;
public class HelloWorld {
	public static void main(String[] args) {
		System.out.println("Hello World");
	}
}

在上一級目錄建立build.xml檔案,鍵入以下內容:

<?xml version="1.0" encoding="UTF-8"?>
<project name="HelloWorld" default="run" basedir="."><!-- 專案名為HelloWorld,default代表預設要做的事情,.代表當前目錄-->
	<property name="src" value="src"/><!-- 定義src變數 -->
	<property name="dest" value="classes"/> <!-- 定義dest變數-->
	<property name="hello_jar" value="hello.jar"/><!-- 定義hello_jar變數-->
	<target name="init"> <!-- 定義一個目標,這裡表示初始化,mkdir表示建立一個目錄,${dest}表示取變數dest的值 -->
		<mkdir dir="${dest}"/>
	</target>
	<!-- 編譯目標,depends是它依賴的target,在init執行過才執行compile-->
	<target name="complie" depends="init"> 
		<!-- 執行javac命令 srcdir源目錄 destdir目標目錄-->
		<javac srcdir="${src}" destdir="${dest}"/>
	</target>
	<!-- 構建目標,依賴compile-->
	<target name="build" depends="complie">
		<!-- 執行jar命令 jarfile為jar檔案 basedir為classes-->
		<jar jarfile="${hello_jar}" basedir="${dest}"/>
	</target>
	<!--執行-->
	<target name="run" depends="build">
		<java classname="test.ant.HelloWorld" classpath="${hello_jar}"/>
	</target>
	<!-- 刪除生成的檔案-->
	<target name="clean">
		<delete dir="${dest}"/>
		<delete file="${hello_jar}"/>
	</target>
	<!--再次執行-->
	<target name="rerun" depends="clean,run">
		<ant target="clean"/>
		<ant target="run"/>
	</target>
</project>

來總結一下以上用到的元素:

project節點元素

Ant構建檔案的根元素,屬性:

  • name屬性:用於指定project元素的名稱。
  • default屬性:用於指定project預設執行時執行的target的名稱。
  • basedir屬性:用於指定基路徑的位置。

property節點元素

用於定義變數或引數的定義,屬性:

  • name屬性:變數名字
  • value屬性:變數值
ant有一些內建的特性如:
ant.file–>構建檔案如build.xml檔案所在的路徑
ant.home->ant的根路徑
ant.java.version->java版本
ant.project.name->當前project的名字,在build.xml的開頭指定
ant.version->ant版本

target節點元素

可以看做是一個任務,它有如下屬性:

  • name屬性:指定target元素的名稱。
  • depends屬性:用於描述target之間的依賴關係。
  • if屬性:用於驗證指定的屬性是否存在,若不存在,所在target將不會被執行。
  • unless 屬性:該屬性的功能與 if 屬性的功能正好相反,它也用於驗證指定的屬性是否存在,若不存在,所在 target 將會被執行。
  • description 屬性:該屬性是關於 target 功能的簡短描述和說明。

mkdir命令

建立目錄。

javac命令

用於編譯一個或一組java檔案。

jar命令

用來生成一個JAR檔案。

delete命令

對檔案或目錄進行刪除。

相關文章