日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Ant基础

發布時間:2025/7/14 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Ant基础 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

一 Ant 介紹

Ant是構建工具,用來實現軟件的自動化的構建,類似于VisualStudio的project文件,Linux上構建C++的makefile,Ant通常用來構建Java程序。

Ant是基于XML的文件,所以更容易閱讀;Ant是用Java實現的,本身支持跨平臺;Ant基于插件的方式開發,本身內置了常用的大部分的插件,而且第三方的擴展也很容易;Ant除了用來構建Java程序,也可以用來構建其他的任何程序,例如C++等。

和Ant類似,能夠支持跨平臺的其他的一些非常優秀的構建工具有Maven,Scons,CMake等。

?

二 Ant的配置

1)安裝jdk,設置
JAVA_HOME=D:\Java\Jdk1.5
classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

path=%JAVA_HOME%\bin;%path%

2)下載安裝Ant,且設置
ANT_HOME=E:\Lab\apache-ant-1.8.2

path=E:\Lab\apache-ant-1.8.2\bin

3) 最后驗證是否安裝成功在dos中輸入ant,如果顯示

Buildfile: build.xml does not exist!

Build failed

則安裝成功

?

三 Ant的基礎元素

1)Project元素

Project元素是Ant文件的根元素,Ant構建文件中至少應該包含一個project元素,否則會發生錯誤。在每個project元素下面可以包含多個target元素。project的屬性包括:

name : 項目名稱

default:當調用時沒有指定target時,此project的默認targe

basedir:用于指定基路徑的位置,改屬性沒有指定時,使用Ant的構建文件的父目錄作為基路徑

例如:
< ?xml version="1.0" ?>
< project name ="antPro" default ="getBaseDir" basedir ="C:/ThinkInJavaCode">
<target name="getBaseDir">
<echo message="The base dir is: ${basedir}"/>
</target>
< /project>

從上例可以看出,在這里定義了default 屬性的值為getBaseDir ,即當運行ant 命令時,如果沒有指明待執行的target,則將執行默認的target--getBaseDir 。此外,還定義了basedir 屬性的值為 "C:/ThinkInJavaCode" ,進入"C:/ThinkInJavaCode" 后運行ant 命令,得一下結果:
Buildfile: C:\ThinkInJavaCode\build.xml

sayBaseDir:
[echo] The base dir is: C:\ThinkInJavaCode


BUILD SUCCESSFUL
Total time: 0 seconds

?

2)target元素

target為Ant的基本執行單元,他可以包含一個或多個具體的任務。

target的屬性有:

name: target的名稱,這個屬性在一個project中是唯一的。我們可以通過指定 target 元素的名稱來指定某個 target 。

depends:用來描述target間的依賴關系,若與多個 target 存在依賴關系時,需要以“,”間隔。 Ant 會依照 depends 屬性中 target 出現的順序依次執行每個 target 。被依賴的 target 會先執行。

if:用于驗證指定的屬性是否存在,若不存在,所在 target 將不會被執行。

unless:該屬性的功能與 if 屬性的功能正好相反,它也用于驗證指定的屬性是否存在,若不存在,所在 target 將會被執行。

description:該屬性是關于 target 功能的簡短描述和說明。


多個target可以存在相互依賴的關系。Ant會依照depends屬性中target出現的順序依次執行每個target。然而,要記住的是只要某個target依賴于一個target,后者就會被先執行。

<target name="A"/>

<target name="B" depends="A"/>

<target name="C" depends="B"/>

<target name="D" depends="C,B,A"/>

假定我們要執行target D。從它的依賴屬性來看,你可能認為先執行C,然后B,最后A被執行。錯了,C依賴于B,B依賴于A,所以先執行A,然后B,然后C,最后D被執行。

一個target只能被執行一次,即時有多個target依賴于它。

?

3)property元素

property元素可看作變量或者參數的定義(即經常使用的變量),project 的屬性可以通過 property 元素來設定,也可在 Ant 之外設定。例如<property name ="name" value ="philander"/>。若要在外部引入某文件,例如 build.properties 文件,可以通過如下內容將其引入<property file=” build.properties”/>。

?

Ant 提供了一些內置的屬性,它能得到的系統屬性的列表與 Java 文檔中 System.getPropertis() 方法得到的屬性一致,這些系統屬性可參考 sun 網站的說明。同時, Ant 還提供了一些它自己的內置屬性,如下:

basedir:project 基目錄的絕對路徑;

ant.file:buildfile的絕對路徑,上例中ant.file值為C:\ThinkInJavaCode\build.xml;

ant.version:Ant 的版本信息,本文為1.8.1 ;

ant.project.name:當前指定的project的名字,即前文說到的project的name屬性值;

ant.java.version:Ant 檢測到的JDK版本,本文為 1.6 。

舉例說明如下:
<? xml version="1.0" ?>
<project name ="propertyPro" default ="example">
<property name ="name" value ="philander"/>
<property name ="age" value ="25"/>
<target name ="example">
<echo message ="name: ${name}, age: ${age}"/>
</target>
</project>

上例中用戶設置了名為name 和age的兩個屬性,這兩個屬性設置后,在下文中可以通過 ${name} 和 ${age} 分別取得這兩個屬性值。

?

四 ANT常用命令

1. copy 命令

copy主要用來對文件和目錄的復制功能。舉例如下:

eg1. 復制單個文件:
<copy file="original.txt" tofile="copied.txt"/>

eg2. 對文件目錄進行復制:
<copy todir="../dest_dir">

<fileset dir="src_dir"/>
</copy>

eg3. 將文件復制到另外的目錄:
<copy file="source.txt" todir="../home/philander"/>


2. delete 命令

對文件或目錄進行刪除,舉例如下:

eg1. 刪除某個文件:
<delete file="/home/photos/philander.jpg"/>

eg2. 刪除某個目錄:
<delete dir="/home/photos"/>

eg3. 刪除所有的備份目錄或空目錄:
<delete includeEmptyDirs="true">
<fileset dir="." includes="**/*.bak"/>
</delete>


3. mkdir 命令

創建目錄。 eg :
<mkdir dir="/home/philander/build/classes"/>


4. move 命令

移動文件或目錄,舉例如下:

eg1. 移動單個文件:
<move file="sourcefile" tofile=”destfile”/>

eg2. 移動單個文件到另一個目錄:
<move file="sourcefile" todir=”movedir”/>

eg3. 移動某個目錄到另一個目錄:

<move todir="newdir"> <fileset dir="olddir"/></move>


5. echo 命令

該任務的作用是根據日志或監控器的級別輸出信息。它包括 message 、 file 、 append 和 level 四個屬性,舉例如下
<echo message="Hello,ANT" file="/home/philander/logs/ant.log" append="true">


五 利用ant 構建和部署Java項目

Ant 可以代替使用 javac 、 java 和 jar 等命令來執行 java 操作,從而達到輕松的構建和部署 Java 項目的目的。


1. 利用ant 的javac命令來編譯Java程序

Ant 的javac命令用于實現編譯Java 程序的功能。下面來看一個簡單的例子:首先我們建立名為 JavaTestPro的Java項目,建立src目錄為源代碼目錄,在src目錄下建立HelloWorld.java這個類文件。該類文件的內容如下:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("hello world!");
}
}

同時在JavaTestPro項目的根目錄下建立build.xml 文件,在該文件中編譯src 目錄下的Java文件,并將編譯后的class文件放入build/classes 目錄中,整個項目的目錄結構如下:

|JavaTestPro

|src

|build

|classes

|build.xml

在編譯前,需清除classes 目錄,該文件的內容如下:
<?xml version="1.0" ?>
<project name ="javacTest" default="compile" basedir=".">
<target name="clean">
<delete dir="${basedir}/build"/>
</target>
<target name="compile" depends ="clean">
<mkdir dir ="${basedir}/build/classes"/>
<javac srcdir ="${basedir}/src" destdir ="${basedir}/build/classes"/>
</target>
</project>

在項目根目錄(C:\ThinkInJavaCode\JavaTestPro)執行ant命令后,可在該目錄下發現新生成的build/classes子目錄,編譯后生成的HelloWorld.class文件就在該目錄下。


2. 使用java命令執行Java程序

Ant 中可以使用 java命令實現運行Java程序的功能。可以在上面的build.xml基礎上做修改來實現:
<?xml version="1.0" ?>
<project name ="javacTest" default="run" basedir=".">
<target name="clean">
<delete dir="${basedir}/build"/>
</target>
<target name="compile" depends ="clean">
<mkdir dir ="${basedir}/build/classes"/>
<javac srcdir ="${basedir}/src" destdir ="${basedir}/build/classes"/>
</target>
<target name="run" depends ="compile">
<java classname ="HelloWorld">
<classpath>
<pathelement path="${basedir}/build/classes"/>
</classpath>
</java>
</target>
</project>

接著,就可以在控制臺看見輸出:"[java] hello world!"


3. 使用jar命令生成jar文件

還可以在上例的基礎上更進一步,來生成jar包,可在run 這個 target 下再加上如下 target :
<?xml version="1.0" ?>
<project name ="javacTest" default="jar" basedir=".">
<target name="clean">
<delete dir="${basedir}/build"/>
</target>
<target name="compile" depends ="clean">
<mkdir dir ="${basedir}/build/classes"/>
<javac srcdir ="${basedir}/src" destdir ="${basedir}/build/classes"/>
</target>
<target name="run" depends="compile">
<java classname ="HelloWorld">
<classpath>
<pathelement path="${basedir}/build/classes"/>
</classpath>
</java>
</target>
<target name="jar" depends="run">
<jar destfile="helloworld.jar" basedir="${basedir}/build/classes">
<manifest>
<attribute name="Main-class" value="HelloWorld"/>
</manifest>
</jar>
</target >
</project>

其中,project的default 屬性設置為應設為jar,ant運行完畢后,可看到在項目的根目錄下生成了一個 helloworld.jar的jar包 。可通過運行以下命令來執行該jar包:
java -jar helloworld.jar


4. 使用war命令打包JavaEE項目

建立一個JavaEE項目,其中src 為Java源代碼目錄,WebContent為各jsp存放目錄,lib 為項目引用的的包的目錄。在WebTest項目目錄下建立了build.xml 文件,該文件為該工程的 Ant 構件文件。

|WebContent

|src

|build

|classes

|WebContent

|META-INF

|MANIFEST.MF

|WEB-INF

|lib

|classes

|HelloJSP.jsp

|build.xml

讀者可以 src 目錄下放入在前續例子中開發的 HelloWorld.java 文件,并在 WebContent下建立 HelloJSP.jsp 文件,其內容很簡單,就是輸出 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=UTF-8">
<title>war test for ant</title>
</head>
<body>
Hello JSP!Hello Ant!
</body>
</html>

接下來編寫 build.xml 文件,其內容如下:
<?xml version="1.0" encoding="UTF-8" ?>
<project name ="WebTest" default ="war" basedir =".">
<property name ="classes" value ="${basedir}/build/classes"/>
<property name ="build" value ="${basedir}/build"/>
<property name ="lib" value ="${basedir}/WebContent/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 ="${basedir}/src" destdir ="${classes}"/>
</target>

<!-- 打war 包-->
<target name ="war" depends ="compile">
<war destfile ="${build}/WebTest.war" webxml ="${basedir}/WebContent/WEB-INF/web.xml">
<!-- 拷貝WebRoot 下除了WEB-INF 和META-INF 的兩個文件夾-->
<fileset dir ="${basedir}/WebContent" includes ="**/*.jsp"/>
<!-- 拷貝lib 目錄下的jar 包-->
<lib dir ="${lib}"/>
<!-- 拷貝build/classes 下的class 文件-->
<classes dir ="${classes}"/>
</war>
</target>
</project>

在C:\ThinkInJavaCode\WebTest目錄下運行ant后,就生成了WebTest.war 文件了,然后可以將其放入Web容器(如Tomcat)的相應目錄下(${Tomcata安裝目錄}\webapps)運行該web項目了。

?

參考:

http://www.cnblogs.com/wangchenyang/archive/2011/09/14/2176688.html

http://www.cnblogs.com/philander/articles/1782254.html

?

轉載于:https://www.cnblogs.com/itech/archive/2011/10/31/2230059.html

總結

以上是生活随笔為你收集整理的Ant基础的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。