`

Ant之build.xml 简单例子 讲解

 
阅读更多
转JUnit Gossip: 建構檔案http://caterpillar.onlyfun.net/Gossip/JUnit/BuildFile.html
参考Api Ant之build.xml详解http://blog.sina.com.cn/s/blog_4ea1df280100e8gi.html
<project name="example" default="run">
	                       <!--startUp step is default=run-->
    
    <property name="src.dir" value="src"/> 
    <property name="bin.dir" value="bin"/> 
    <property name="bak.dir" value="bak"/>

    <!--step1-->
    <target name="prepare"> 
        <mkdir dir="${bin.dir}"/> 
        <mkdir dir="${bak.dir}"/> 
        <copy todir="${bak.dir}"> 
            <fileset dir="${bin.dir}"/> 
        </copy> 
    </target> 
		
		<!--step2
		1:<javac标签>
        该标签用于编译一个或一组java文件,其属性如下。
				(1).srcdir表示源程序的目录。
				(2).destdir表示class文件的输出目录。
				-->
    <target name="compile" depends="prepare"> 
        <javac srcdir="${src.dir}" destdir="${bin.dir}"/> 
    </target>
    
    <!--step3
     1:classpath表示所使用的类路径。
     2:<java>标签
       该标签用来执行编译生成的.class文件,其属性如下。
       (1).classname 表示将执行的类名。
       (3).classpath所表示用到的类路径。
     -->
    <target name="run" depends="compile">
        <java classname="cc.openhome.HelloAnt">
            <classpath path="${bin.dir}"/>
        </java>
    </target>
    
</project>
<!--总体功能概述 
最终目的 执行 程序 HelloAnt.class ***java HelloAnt***
這邊打算進 行的工作是:
(id=compile):編譯src/cc/openhome中的HelloAnt.java,其編譯成果將儲存至bin目錄中,如果 bin目錄不存在就建立它,
(id=prepare):每一次編譯將bin中前一次編譯的成果複製至bak目錄,如果bak目錄不存在就建立它,
(id=run):最後執行程式。
-->

<!--
建構過程中<target>所共享的屬性,
可以使用<property>標籤設定,
每一個屬性的值會有個名稱對應,以這個例子而言,您設定了程式碼來源位置、編譯結果目標目錄與備份目錄。
-->

<!--
<project>中包括數個<target>,每一個<target>有一個名稱,
<project>的任務執行進入點預設是名稱為"run"的 <target>,
每個<target>可以使用depends屬性指定依賴其它的<target>,
	也就是所依賴的<target>必須先執行完成,才會執行自己的目標。
在上例中,"run"的完成依賴於"compile"的完成,
"compile"的完成又依賴於"prepare"的完成,
所以在建構開始時,
step_1:會先執行"prepare",
step_2:完成後再執行"compile",
step_3:最後執行"run"。
-->

<!--
在上例中,build.xml是以<project>為根標籤。
一個build.xml中可以定義多個任務, 
這些任務可能是建立目錄、編譯原始碼、搬移檔案、產生doc文件、進行測試、產生測試報告等,
這些任務通常組織為一個目標 (target)。
-->

<!--
HelloAnt.java只是個簡單的程式:
 package cc.openhome;
public class HelloAnt { 
    public static void main(String[] args) { 
        System.out.println("Hello! Ant!!"); 
    } 
}
-->
<!--
就這個例子而言,使用Ant是有點小題大作了,不過這讓我們可以將焦點集中在Ant本身的設定與執行。
編輯好build.xml之後,在文字模式下於build.xml所在的目錄中,
直接下ant指令即可開始建構專案,
ant預設會讀取同一個目錄下的build.xml,
第一次執行ant時會出現以下的文字提示建構過程:
picture:ant_001.png


**********************屏幕显示内容start*******************************************************************
>ant
Buildfile: C:\workspace\example\build.xml

prepare:
    [mkdir] Created dir: C:\workspace\example\bin
    [mkdir] Created dir: C:\workspace\example\bak

compile:
    [javac] C:\workspace\example\build.xml:14: warning: 'includeantruntime' was not
set, defaulting to build.sysclasspath=last; set to false for repeatable builds
    [javac] Compiling 1 source file to C:\workspace\example\bin

run:
     [java] Hello! Ant!!

BUILD SUCCESSFUL
Total time: 1 second
**********************屏幕显示内容end*******************************************************************

可以看到ant已經完成了所指定的工作,
現在假設修改了HelloAnt.java並存檔,接下來再次下達ant指令,這次出現以下的文字提示建構過程:


**********************屏幕显示内容start*******************************************************************
>ant
Buildfile: C:\workspace\example\build.xml

prepare:
     [copy] Copying 1 file to C:\workspace\example\bak

compile:
    [javac] C:\workspace\example\build.xml:14: warning: 'includeantruntime' was
not set, defaulting to build.sysclasspath=last; set to false for repeatable buil
ds

run:
     [java] Hello! Ant!!

BUILD SUCCESSFUL
Total time: 0 seconds 
**********************屏幕显示内容end*********************************************************************
這次由於bin與bak目錄已經存在,就不用再進行新建目錄的工作,
ant檢查bin中有之前構建的檔案,於是將它複製至bak目錄中。
-->

<!--
在建構程式時,有些目標所定義的任務可能是可選的,
可以藉由在設定<target>時設定if條件,並在建構時指定該條件為true或 false,以決定該目標是否要執行,
例如可以這麼設定:
<target name="some" if="conditional"> 
    some task..... 
</target> 

使用if設定條件目標時,表示只有在conditional被設置時才會被執行,在執行ant指令時,您就可以如下來決定some是否要執行:

********************************************
ant -buildfile build.xml -Dconditional=true 
********************************************

您也可以使用unless來設定條件目標:
<target name="some" unless="conditional"> 
    some task..... 
</target>

由於您使用了unless來設定條件目標,所以只有在conditional沒有被設定時,目標才會被執行。
由於ant可以在一個建構檔案中調用另一個建構檔案,
在調用的時候,
兩個建構檔案之間可能會有一些重複的屬性設定,
如果您想要避免某個屬性被重複設定了,可以這麼撰寫:

<target name="setProperties" unless="setProperties"> 
    <property name="someProperty" value="someValue"/> 
    ... 
</target> 
  
你在啟動ant指令時,也可以指定目標,例如:
ant prepare

可以使用<ant>標籤,在一個建構檔案中調用另一個建構檔案,一個簡單的例子如下:
<project name="someProject" default="all"> 
    ...... 
    <target name="some" depends="other"> 
        <ant antfile="./project2/build.xml"> 
            <property name="condition_name" value="true"> 
        </ant> 
    <target> 
    ...... 
</project>
在<property>中設定value為true,當您在另一個建構中有目標使用了條件式(if或unless)時,這可以給予該條件一個true的特性值。

您也可以指定專案的 目錄 來調用預設的build.xml,例如:
<project name="someProject" default="all"> 
    .... 
    <target name="some" depends="other"> 
        <ant dir="./project2"> 
            <property name="condition_name" value="true"> 
        </ant> 
    <target> 
    .... 
</project> 
 

您也可以僅僅調用另一個建構檔案中的某個目標,例如:
<ant antfile="./project2/build.xml" target="prepare"/>  
-->

<!--show element
**********************屏幕显示内容start******************************************************************* 
**********************屏幕显示内容end*********************************************************************
--->

分享到:
评论

相关推荐

    ant-installer.jar.zip

    以下是一个简单的build.xml示例: ```xml &lt;javac srcdir="src" destdir="build/classes"/&gt; &lt;jar destfile="build/myproject.jar" basedir="build/classes"/&gt; ``` 在这个例子中,我们定义了两个目标...

    ant-subdirtask.jar.zip

    本文将深入探讨Ant中的一个特定任务——SubdirTask,并结合“ant-subdirtask.jar.zip”这个压缩包,来讲解其工作原理和实际应用。 Ant是一个由Apache软件基金会开发的任务驱动的构建系统,它提供了一系列内置的任务...

    ant导出jar包例子

    本篇文章将详细讲解如何使用Ant来导出JAR包,以及通过一个简单的`build.xml`文件示例来演示这一过程。 首先,让我们了解Ant的基本结构。一个Ant项目的核心是`build.xml`文件,它是Ant任务的配置文件,包含了项目...

    Ant学习例子

    通过Ant,我们可以编写一个名为`build.xml`的配置文件,该文件详细描述了构建过程的每个步骤。 首先,让我们看看一个基本的`build.xml`文件结构: ```xml &lt;project name="AntTest" default="main" basedir="."&gt; ...

    ant1.9资源

    ant.file:buildfile的绝对路径,如上面的各例子中,ant.file的值为E:"build.xml; ant.version:Ant的版本,在本文中,值为1.7.0; ant.project.name:当前指定的project的名字,即前文说到的project的name属性的...

    ant 简单实例

    本篇文章将深入探讨"ant简单实例",通过一个基础的Ant构建文件`build.xml`来讲解其工作原理和基本使用方法。 Ant的工作机制是基于任务(task)的,这些任务由XML元素定义,并且可以包含其他任务或属性。在我们的例子...

    19_ant_完整操作一个用户管理的小例子_实现了登录

    1. **安装与配置Ant**:讲解如何在开发环境中安装Apache Ant,配置ANT_HOME环境变量,以及设置全局build.xml文件的路径。 2. **创建构建文件**:介绍如何编写基本的build.xml文件,定义项目的目标和任务,例如定义...

    ANT资料文件

    用户可以通过它们学习如何配置ANT构建文件(build.xml),以及如何使用不同的任务(tasks)进行项目构建。 2. **apache-ant-1.8.2.chm**: 这是ANT 1.8.2版本的文档,相比1.7版本,可能包含了一些新特性、改进和...

    Ant打包Applet并添加数字签名

    总结一下,Ant打包Applet并添加数字签名涉及到的主要步骤包括:配置Ant的build.xml文件,定义编译和打包的目标,设置JAR的manifest信息,使用`jarsigner`对JAR文件进行签名,并确保所有操作符合Java的安全策略。...

    ant执行sql文件

    下面是一个简单的`build.xml`片段,展示了如何配置Ant来执行SQL文件: ```xml 执行示例" basedir="." default="run-sql"&gt; &lt;!-- 定义属性,如数据库连接信息 --&gt; &lt;property name="db.url" value="jdbc:mysql://...

    Ant 一个生成Zip完成的例子

    本篇文章将深入探讨Ant如何生成Zip文件,并通过一个实际例子进行详细讲解。 Apache Ant是一个基于Java的构建工具,它允许开发者用XML格式定义项目任务,包括编译、打包、测试等。它的设计目标是替代Makefile,为...

    gradle打包android (实现外部导入签名文件、多渠道打包、导入ant脚本)

    首先,确保你的项目中包含`build.xml` Ant脚本,然后在`build.gradle`中引入: ```groovy task myAntTask(type: Ant) { def antBuildFile = file('build.xml') ant.project.properties.'ant.buildfile' = ...

    一个使用ant及junit进行单元测试的简单例子

    标题中的“一个使用ant及junit进行单元测试的简单例子”揭示了本主题将围绕两个核心工具——Apache Ant和JUnit,讲解如何在Java项目中进行单元测试。Apache Ant是一个广泛使用的构建工具,它允许开发者通过XML配置...

    ant打jar包以及制作成bat文件双击运行

    在Ant中,构建过程被定义在一个名为build.xml的XML文件中,这个文件包含了构建任务的描述。 制作jar包的过程主要涉及到Ant的`&lt;jar&gt;`任务。在build.xml文件中,你需要定义一个`&lt;project&gt;`元素,然后在其中添加`...

    Ant权威指南

    2. **项目配置**:书中会详细讲解如何在build.xml中设置属性(properties)、路径(paths)和文件集(filesets)。属性用于存储可重用的值,路径是类库或源文件的集合,文件集则用于指定一组文件。 3. **任务使用**...

    ant 入门集成

    一个简单的build.xml文件通常包含project、target和task元素: ```xml &lt;project name="MyProject" default="compile" basedir="."&gt; &lt;javac srcdir="src" destdir="build/classes"/&gt; ``` 在这个例子中,project...

    Ant入门-ant入门pdf

    2. **Ant基本结构**:介绍构建文件`build.xml`的结构,包括项目(project),目标(target),任务(task),以及属性(attributes)等元素。 3. **安装与配置**:详细说明如何在不同的操作系统上安装Ant,以及配置环境变量...

    start ant 1 ant 入门

    Apache Ant是Java开发中广泛使用的构建工具,它使用XML格式的构建文件(通常是build.xml)来定义任务和目标,这些任务和目标可以编译源代码、创建JAR文件、执行测试等。Ant的核心理念是“一切都是一个任务”,它允许...

    ant-contrib-1.0b3-bin.jar

    本文将详细探讨"ant-contrib-1.0b3-bin.jar"这个组件,并讲解其在Ant构建过程中的作用和使用方法。 一、ant-contrib库介绍 "ant-contrib"库是由社区开发的一个非官方Ant扩展,它包含了一系列自定义的任务和条件,...

    Struts2官方例子3--Action的编写

    使用Ant构建工具,我们可以创建一个build.xml文件来编译和运行项目。Ant的`&lt;target&gt;`标签定义了不同的构建任务,如编译源代码、打包和部署等。 ```xml &lt;property name="src.dir" value="src"/&gt; ...

Global site tag (gtag.js) - Google Analytics