1. 程式人生 > >Ant 之 Task

Ant 之 Task

幫助信息 manifest 編譯 lin true pan url odi rip

Ant提供了大量的核心task和可選task,除此之外,Ant還允許用戶定義自己的task,這大大擴展了Ant的功能。
本書由於篇幅關系,所以不可能詳細介紹Ant所有的核心task和可選task,本書將會簡要介紹一些常用的核心task。


—javac:用於編譯一個或者多個Java源文件,通常需要srcdir和destdir兩個屬性,用於指定Java源文件的位置和編譯後class文件的保存位置。
—java:用於運行某個Java類,通常需要classname屬性,用於指定需要運行哪個類。
—jar:用於生成JAR包,通常需要指定destfile屬性,用於指定所創建JAR包的文件名。除此之外,通常還應指定一個文件集,表明需要將哪些文件打包到JAR包裏。
—sql:用於執行一條或多條SQL語句,通常需要driver、url、userid和password等屬性,用於指定連接數據庫的驅動類、數據庫URL、用戶名和密碼等,還可以通過src來指定需要指定的SQL腳本文件,或者直接使用文本內容的方式指定SQL腳本字符串。
—echo:輸出某個字符串。
—exec:執行操作系統的特定命令,通常需要executable屬性,用於指定想執行的命令。
—copy:用於復制文件或路徑。
—delete:用於刪除文件或路徑。
—mkdir:用於創建文件夾。
—move:用戶移動文件和路徑。


提示:%ANT_HOME%/docs/manual/CoreTasks路徑下包含了Ant所有核心 task的詳細介紹,而%ANT_HOME%/docs/manual/OptionalTasks路徑下包含了Ant所有可循task的詳細介紹。

=========================================================================================================

例如:build.xml文件如下:

<?xml version="1.0" encoding="GBK"?>
[code]<!-- 定義生成文件的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"
deprecation="false" optimize="false" fail>
<!-- 指定需要編譯的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" fail>
<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>

轉自--------------------http://blog.sina.com.cn/s/blog_6870d1e00100ixdx.html

Ant 之 Task