一. ant簡介
Ant是apache的一個核心項目, 它的作用是項目自動化構建, 因為它內建了Javac、Java、建立目錄、複製檔案等功能,
直接運行build.xml檔案就可以編譯我們的項目。
二. ant配置
1. 建立環境變數ANT_HOME: ant的解壓目錄
2. 在path中配置:%ANT_HOME%/bin;
3. 在命令列中輸入ant, 如果出現 Buildfile:build.xml does not exist! Build failed 說明配置成功
三. ant入門程式
build.xml
<?xml version="1.0" encoding="GBK"?><project default="targetname"> <target name="name"></target></project>
project是組建檔案的根項目, 表示一個工程
target是project的子項目, 表示一個任務, 一個project中可以定義多個target元素, 表示多個任務
default屬性工作表示預設執行的target, 如果ant命令沒有指定target, 則執行default的target
ant targetName則會執行此target, 而忽略default設定的target
四. ant編譯Java項目流程
1. 建立檔案夾
build -> 所有檔案資訊都儲存在這個檔案夾中
-- src -> 所有源碼資訊儲存在這個檔案夾中
-- classes -> 編譯好的所有檔案儲存在這個檔案夾中
-- dist -> 編譯好的jar檔案儲存在這個檔案夾中
2. 將src中檔案拷貝到build/src
3. 編譯源碼
4. 將源碼打包成jar
5. 直接運行程式
<?xml version="1.0" encoding="UTF-8"?><project default="execute"><!-- 使用屬性定義相應路徑的時候, 使用location(會根據作業系統轉換路徑), 如果不是路徑就使用value --><property name="build.dir" location="build" /><property name="build.classes" location="${build.dir}/classes" /><property name="build.src" location="${build.dir}/src" /><property name="build.lib.dir" location="${build.dir}/dist" /><!-- 如果屬性太多, 可以將屬性放在一個外部檔案中定義, 在本檔案中引用特別注意: 如果是路徑就不建議在外部檔案中定義, 因為此時就不會設定location的值 --><property file="build.properties" /><!-- 把環境變數中的參數存放在env這個變數中 --><property environment="env" /> <target name="test"> <echo>${ant.home}</echo> <echo>${ant.version}</echo> <echo>${env.CLASSPATH}}</echo> </target><!-- fileset可以設定一組檔案集來進行操作, dir指明檔案集進行選擇的路徑 通過id可以指定這個檔案的名稱, 下面使用的時候可以直接引入 include和exclude可以設定包含和排除檔案的範圍 --><fileset id="src.path" dir="src"><include name="**/*.*" /><exclude name="**/Test*.java"/></fileset><target name="init"><delete dir="${build.dir}" /><mkdir dir="${build.dir}" /><mkdir dir="${build.classes}" /><mkdir dir="${build.src}" /><mkdir dir="${build.lib.dir}" /></target><target name="copySrc" depends="init"><copy todir="${build.src}"><fileset refid="src.path"></fileset></copy></target><target name="compile" depends="init"><javac destdir="${build.classes}" srcdir="src"></javac></target><target name="jar" depends="compile"><jar destfile="${build.lib.dir}/${jar.name}" basedir="${build.classes}"><manifest><attribute name="Main-Class" value="${execute.class}"/><attribute name="Build-By" value="zhangdongping"/></manifest></jar></target><target name="execute" depends="jar, copySrc"><echo>基於類路徑下的classname來完成執行</echo><java classname="${execute.class}" classpath="${build.classes}"><arg value="zhangsan" /></java><echo>基於jar檔案執行</echo><java jar="${build.lib.dir}/${jar.name}" fork="true"><arg value="liming" /></java></target></project>
build.properties
execute.class = com.zdp.test.HelloWorldjar.name = hello.jar
HelloWorld.java
package com.zdp.test;public class HelloWorld {public static void main(String[] args) {System.out.println("hello " + args[0]);}}