西西軟件下載最安全的下載網(wǎng)站、值得信賴的軟件下載站!

首頁編程開發(fā)java → Java工程自動化構(gòu)建、部署工具Ant使用教程

Java工程自動化構(gòu)建、部署工具Ant使用教程

前往專題相關(guān)軟件相關(guān)文章發(fā)表評論 來源:西西整理時間:2012/11/30 10:10:43字體大。A-A+

作者:西西點擊:0次評論:0次標簽: 部署

  • 類型:編程輔助大小:134KB語言:中文 評分:3.3
  • 標簽:
立即下載

     Ant是一個用于簡單或復(fù)雜Java工程的自動化構(gòu)建、部署工具,它對于那些具有分布式開發(fā)團隊或者相信通過頻繁的構(gòu)建來進行不間斷集成的公司尤其有用。對于那些建立傳統(tǒng)全Java應(yīng)用程序以及那些使用HTML、JSP和Java servlets創(chuàng)建Web應(yīng)用程序的公司來說,Ant極具價值。無論你的Java開發(fā)者使用什么操作系統(tǒng)、集成開發(fā)環(huán)境或者構(gòu)建環(huán)境,Ant都可以將你的工程集合在一起,用于那些重要的構(gòu)建。Ant也能夠自動化并且同步文檔部署,這通常發(fā)生在軟件開發(fā)過程中的沒有正式文檔和文檔比較混亂的部分。

     在構(gòu)建和部署Java應(yīng)用程序的時候,Ant處理著大量有用的任務(wù)。最基本的任務(wù)包括添加和移除目錄、使用FTP拷貝和下載文件、創(chuàng)建JAR和ZIP文件以及創(chuàng)建文檔。更高級的特性包括用源代碼控制系統(tǒng)諸如CVS或者SourceSafe來檢查源代碼、執(zhí)行SQL查詢或腳本、將XML文件轉(zhuǎn)換為人能識別的HTML,以及為遠程方法調(diào)用生成stub(存根)文件。

     Ant和Make(非常著名的構(gòu)建工具,很多C語言開發(fā)人員都使用它)之間有什么不同?Ant是為Java而創(chuàng)建,帶有屬于其自身的、獨特的范例,具有可移植性。而Make依賴于固定的操作系統(tǒng)命令(因此一個運行在微軟Windows下的Make文件對于使用UNIX的開發(fā)者來說毫無用處),利用Ant構(gòu)建的純Java工程是可移植的,因為Ant本身就是用Java編寫的,并且Ant bulidfiles使用XML語法。

1.下載及安裝

Apache Ant是一個基于Java的構(gòu)建工具,滿足跨平臺使用。

下載及安裝:http://ant.apache.org/

解壓下載的Ant拷貝到任意目錄以D:\Program Files\apache-ant-1.8.4為例

將D:\Program Files\apache-ant-1.8.4配置為系統(tǒng)變量ANT_HOME

在PATH中加入%ANT_HOME%\bin

命令提示符中輸入ant相關(guān)命令可以查看是否配置正確。

2.簡單實例

實例:編譯運行一個簡單的類。

編寫一個簡單的HelloWorld

public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello, ANT!!!");
}
}

建立build.xml(名稱可改)

HelloWorld.java和build.xml所在目錄示意:

├src

│ └HelloWorld.java

└build.xml

<?xml version="1.0" encoding="UTF-8"?>
<project name="antStudyProj" default="run" basedir=".">
<property name="classdir" value="build/classes"/>
<echo message="Learn Ant!!!"/>
<target name="clean">
<delete dir="${classdir}"/>
</target>

<target name="compile" depends="clean">
<mkdir dir="${classdir}" />
<javac srcdir="src" destdir="${classdir}" includeantruntime="false"/>
</target>
<target name="run" depends="compile">
<java classname="HelloWorld">
<classpath path="${classdir}"/>
</java>
</target>
</project>

運行Ant,查看結(jié)果(可以通過ant -help查看ant命令的使用)

    這里使用ant -buildfile build.xml文件的絕對路徑來運行,結(jié)果如下:

    注意:可以通過其他方式也可運行ant,ant的入口為org.apache.tools.ant.launch.Launcher,里面包含mian方法,可指定執(zhí)行該類并傳入?yún)?shù)。

3.buildfile介紹

這是官網(wǎng)的build.xml示例

<project name="MyProject" default="dist" basedir=".">
<description>
simple example build file
</description>
<!-- set global properties for this build -->
<property name="src" location="src"/>
<property name="build" location="build"/>
<property name="dist" location="dist"/>

<target name="init">
<!-- Create the time stamp -->
<tstamp/>
<!-- Create the build directory structure used by compile -->
<mkdir dir="${build}"/>
</target>

<target name="compile" depends="init"
description="compile the source " >
<!-- Compile the java code from ${src} into ${build} -->
<javac srcdir="${src}" destdir="${build}"/>
</target>

<target name="dist" depends="compile"
description="generate the distribution" >
<!-- Create the distribution directory -->
<mkdir dir="${dist}/lib"/>

<!-- Put everything in ${build} into the MyProject-${DSTAMP}.jar file -->
<jar jarfile="${dist}/lib/MyProject-${DSTAMP}.jar" basedir="${build}"/>
</target>

<target name="clean"
description="clean up" >
<!-- Delete the ${build} and ${dist} directory trees -->
<delete dir="${build}"/>
<delete dir="${dist}"/>
</target>
</project>

buildfile使用XML編寫。每個buildfile包含一個project元素,而project元素至少有一個target。

project有三個屬性name、default、basedir,都不是必須的。

name:項目名稱

default:指定默認執(zhí)行的target

basedir:故名思意就是工作的根目錄 .代表當前目錄

project中可以定義多個target。Target是要執(zhí)行的tasks的集合。

target有以下屬性:name,depends,if,unless,description,extensionOf,onMissingExtensionPoint。

name:target的名字,必須

depends:此target依賴的targets,用逗號隔開,非必須

if:某個屬性存在或表達式的計算結(jié)果為true,非必須

unless:和if對應(yīng),非必須

description:對target的描述,非必須

task能被執(zhí)行的一段代碼,結(jié)構(gòu)如下

<name attribute1="value1" attribute2="value2" ... />

Property屬性可以通過name及value定義屬性,或通過file指定載入的屬性文件等。

當定義了一個name為example的屬性后,可通過${example}進行引用。

<property name="foo.dist" value="dist"/>

將屬性foo.dist的值設(shè)置為dist

<property file="foo.properties"/>

從foo.properties文件中讀取屬性

<property url="http://www.mysite.com/bla/props/foo.properties"/>

從url指定的properties中讀取所有屬性

Classpath有兩個屬性path和location,path指定jar包,location指定包含jar包的路徑?梢酝ㄟ^fileset和dirset簡化配置。

<classpath>
<pathelement path="${classpath}"/>
<fileset dir="lib">
<include name="**/*.jar"/>
</fileset>
<pathelement location="classes"/>
<dirset dir="${build.dir}">
<include name="apps/**/classes"/>
<exclude name="apps/**/*Test*"/>
</dirset>
<filelist refid="third-party_jars"/>
</classpath>

4.Ant流程控制 if elseif else

    使用循環(huán),判斷等控制時需添加ant-contrib包。

    taskdef定義第三方的任務(wù),主要包含ant的處理流程邏輯

    if elseif else格式如下

<property name="hello" value="false"/>
<taskdef resource="net/sf/antcontrib/antcontrib.properties" classpath="D:\Program Files\apache-ant-1.8.4\lib\ant-contrib-1.0b3.jar" />
<target name="run" depends="compile">
<java classname="HelloWorld">
<classpath path="${classdir}"/>
</java>
<if>
<equals arg1="${hello}" arg2="true"/>
<then>
<echo>${hello} is true</echo>
</then>
<elseif>
<equals arg1="${hello}" arg2="false"/>
<then>
<echo>${hello} is false</echo>
</then>
</elseif>
<else>
<echo>${hello}</echo>
</else>
</if>
</target>

本文導航

    相關(guān)評論

    閱讀本文后您有什么感想? 已有人給出評價!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

    發(fā)表評論 查看所有評論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字數(shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)
    推薦文章

    沒有數(shù)據(jù)