- 論壇徽章:
- 0
|
同時(shí),Ant還提供了一些它自己的內(nèi)置屬性,如下:
basedir:project基目錄的絕對(duì)路徑,該屬性在講解project元素時(shí)有詳細(xì)說明,不再贅述;
ant.file:buildfile的絕對(duì)路徑,如上面的各例子中,ant.file的值為E:"build.xml;
ant.version:Ant的版本,在本文中,值為1.7.0;
ant.project.name:當(dāng)前指定的project的名字,即前文說到的project的name屬性的值;
ant.java.version:Ant檢測(cè)到的JDK的版本,在上例運(yùn)行結(jié)果中可看到為1.5。
下面讓讀者來看一個(gè)property元素使用的簡(jiǎn)單例子。修改E:"build.xml文件,內(nèi)容如下:
xml version="1.0"?>
project name="propertyStudy" default="example">
property name="name" value="amigo"/>
property name="age" value="25"/>
target name="example">
echo message="name: ${name}, age: ${age}"/>
target>
project>
該例的運(yùn)行結(jié)果如下圖所示:
由此讀者可以看出,通過如下兩個(gè)語句:
我們?cè)O(shè)置了名為name和age的兩個(gè)屬性,這兩個(gè)屬性設(shè)置后,讀者在下文中可以通過${name}和${age}分別取得這兩個(gè)屬性的值。
三. Ant的常用任務(wù)
在Ant工具中每一個(gè)任務(wù)封裝了具體要執(zhí)行的功能,是Ant工具的基本執(zhí)行單位。在本小節(jié)中,主要引導(dǎo)讀者來看下Ant的常用任務(wù)及其使用舉例。
1. copy任務(wù)
該任務(wù)主要用來對(duì)文件和目錄的復(fù)制功能。舉例如下:
Eg1.復(fù)制單個(gè)文件:
Eg2.對(duì)文件目錄進(jìn)行復(fù)制:
Eg3. 將文件復(fù)制到另外的目錄:
2. delete任務(wù)
對(duì)文件或目錄進(jìn)行刪除,舉例如下:
Eg1. 刪除某個(gè)文件:
Eg2. 刪除某個(gè)目錄:
Eg3. 刪除所有的備份目錄或空目錄:
3. mkdir任務(wù)
創(chuàng)建目錄。eg:
4. move任務(wù)
移動(dòng)文件或目錄,舉例如下:
Eg1. 移動(dòng)單個(gè)文件:
Eg2. 移動(dòng)單個(gè)文件到另一個(gè)目錄:
Eg3. 移動(dòng)某個(gè)目錄到另一個(gè)目錄:
5. echo任務(wù)
該任務(wù)的作用是根據(jù)日志或監(jiān)控器的級(jí)別輸出信息。它包括message、file、append和level四個(gè)屬性,舉例如下:
四. 利用Ant構(gòu)建和部署Java工程
Ant可以代替使用javac、java和jar等命令來執(zhí)行java操作,從而達(dá)到輕松的構(gòu)建和部署Java工程的目的。下面來看幾個(gè)知識(shí)點(diǎn)。
1. 利用Ant的javac任務(wù)來編譯java程序
Ant的javac任務(wù)用于實(shí)現(xiàn)編譯Java程序的功能。下面來看一個(gè)簡(jiǎn)單的例子:
首先我們建立名為antstudy的Java工程,建立src目錄為源代碼目錄,在src目錄下建立HelloWorld.java這個(gè)類文件。該類文件的內(nèi)容如下:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello,Amigo");
}
}
同時(shí)在antstudy工程的根目錄下建立build.xml文件,在該文件中編譯src目錄下的java文件,并將編譯后的class文件放入build/classes目錄中,在編譯前,需清除classes目錄,該文件的內(nèi)容如下:
xml version="1.0"?>
project name="javacTest"default="compile" basedir=".">
target name="clean">
delete dir="build"/>
target>
target name="compile" depends="clean">
mkdir dir="build/classes"/>
javac srcdir="src" destdir="build/classes"/>
target>
project>
運(yùn)行該build.xml文件,可在工程中看到新增了build/classes目錄,并在該目錄中生成了編譯后的HelloWorld.class文件。
2. 使用Ant的java任務(wù)運(yùn)行Java程序
Ant中可以使用java任務(wù)實(shí)現(xiàn)運(yùn)行Java程序的功能。下面在1的例子中進(jìn)行如下的修改,修改后的build.xml文件的內(nèi)容如下:
xml version="1.0"?>
project name="javaTest" default="jar" basedir=".">
target name="clean">
delete dir="build"/>
target>
target name="compile" depends="clean">
mkdir dir="build/classes"/>
javac srcdir="src" destdir="build/classes"/>
target>
target name="run" depends="compile">
java classname="HelloWorld">
classpath>
pathelement path="build/classes"/>
classpath>
java>
target>
project>
運(yùn)行該build.xml文件,可在控制臺(tái)看到HelloWorld的main方法的輸出。
3. 使用Ant的jar任務(wù)生成jar文件
讀者可以在上例的基礎(chǔ)上更進(jìn)一步,來生成jar包,可在run這個(gè)target下再加上如下target:
target name="jar" depends="run">
jar destfile="helloworld.jar" basedir="build/classes">
manifest>
attribute name="Main-class" value="HelloWorld"/>
manifest>
jar>
target>
此時(shí)將ant的project的default屬性設(shè)置為jar,同時(shí)運(yùn)行該build.xml文件,運(yùn)行完畢后,可看到在工程目錄下生成了一個(gè)jar包HelloWorld.jar。
4. 使用Ant的war任務(wù)打包J2EE Web項(xiàng)目
建立一個(gè)J2EE Web工程,其目錄結(jié)構(gòu)如下圖所示:
其中src為源代碼目錄,WebRoot為各jsp存放目錄,lib為工程的包目錄。在antwebproject工程目錄下建立了build.xml文件,該文件為該工程的Ant構(gòu)件文件。讀者可以src目錄下放入在前續(xù)例子中開發(fā)的HelloWorld.java文件,并在WebRoot下建立index.jsp文件,其內(nèi)容很簡(jiǎn)單,就是輸出Hello信息,代碼如下所示:
@ page language="java" contentType="text/html; charset="UTF-8" pageEncoding="UTF-8"%>
DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
html>
head>
meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
title>ant打包測(cè)試title>
head>
body>
Hello,Ant
body>
html>
接下來編寫build.xml文件,其內(nèi)容如下:
xml version="1.0"?>
project name="antwebproject" default="war"basedir=".">
property name="classes" value="build/classes"/>
property name="build"value="build"/>
property name="lib"value="WebRoot/WEB-INF/lib"/>
刪除build路徑-->
target name="clean">
delete dir="build"/>
target>
建立build/classes路徑,并編譯class文件到build/classes路徑下-->
target name="compile" depends="clean">
mkdir dir="${classes}"/>
javac srcdir="src" destdir="${classes}"/>
target>
打war包-->
target name="war" depends="compile">
war destfile="${build}/antwebproject.war" webxml="WebRoot/WEB-INF/web.xml">
拷貝WebRoot下除了WEB-INF和META-INF的兩個(gè)文件夾-->
fileset dir="WebRoot" includes="**/*.jsp"/>
拷貝lib目錄下的jar包-->
lib dir="${lib}"/>
拷貝build/classes下的class文件-->
classesdir="${classes}"/>
war>
target>
project>
各target的作用在內(nèi)容中已經(jīng)進(jìn)行說明,在此不再贅述。運(yùn)行該build文件,更新目錄后,可看到在build目錄下生成了antwebproject.war文件,解開后可看到其目錄結(jié)構(gòu)如下:
--META-INF
--MANIFEST.MF
--index.jsp
--WEB-INF
--lib
--log4j-1.2.9.jar
--classes
--HelloWorld.class
--web.xml
讀者可以將該war包拷貝到Tomcat的目錄下看一下運(yùn)行結(jié)果。
五. 總結(jié)
在本文中,筆者由淺至深詳細(xì)描述了Ant的安裝與配置、關(guān)鍵元素和常用任務(wù)。并通過實(shí)例講述了Ant在我們Java項(xiàng)目中的應(yīng)用,講述了編譯、運(yùn)行java程序,以及打jar包、war包等知識(shí),引領(lǐng)讀者進(jìn)入Ant的奇妙世界。在本文中可以看到,Ant在自動(dòng)構(gòu)建和部署Java程序方面方便易用,而且非常靈活,不失為我們Java開發(fā)者的絕佳幫手
本文來自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u3/98375/showart_2153401.html |
|