`
aaagu1234
  • 浏览: 148823 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ANT及build.xml文档编写

    博客分类:
  • java
阅读更多
[color=green]
为了批量编译java文件,今天学习了ANT(Another Neat Tool另一个整洁的工具,http://www.apache.org/)及build.xml文档的编写,找了篇文章,先学习模仿~~

Ant是一个基于Java的生成工具,类似于C中的make,但比make优越,与其它大多数Build工具相比较,Ant的两个特性决定了它是一款优秀的Build工具:

1. 基于Java的实现。具有良好的跨平台性,同时可以通过增加新的Java类来扩展Ant的功能,而无需去了解不同平台上不同的脚本语言。

2.基于XML的配置文件。Ant以XML树来描述Target/Task的关系,文件结构清晰、易读易写,并且利用XML对格式的控制来避免由于配置文件的错误造成的Build操作失败。

ANT下载地址:http://apache.mirror.phpchina.com/ant/binaries/apache-ant-1.7.0-bin.zip

安装与配置

Ant的安装非常简单,把从网上下载的jakarta-ant-1.5.1-bin.zip解开到一个目录下即可(以下假定安装在目录D:\jakarta-ant-1.5.1)。接下来需要进行环境变量配置: SET ANT_HOME=D:\jakarta-ant-1.5.1 //注意是Ant的安装目录,不是bin子目录
SET PATH=%PATH%;%ANT_HOME%\bin;


在配置环境变量之前,请确认已经正确设置了JAVA_HOME系统变量。输入ant命令,看到如下输出说明已成功安装了Ant工具:

Buildfile: build.xml does not exist!
Build failed


提示信息表明在当前目录不存在build.xml配置文件,但这本身已经说明Ant成功运行了。

快速入门

下面用一个最简单也是最经典的例子-HelloWorld来感受一下Ant吧。

//HelloWorld.java
package com.sharetop.antdemo;
public class HelloWorld {
public static void main( String args[] ) {
System.out.println("Hello world. ");
}
}


要让Ant编译这个文件,首先需要编写一个Build配置文件。在一般情况下,这个文件被命名为build.xml。

<?xml version="1.0" encoding="UTF-8" ?>
<project name="HelloWorld" default="run" basedir="." >
<property name="src" value="src"/>
<property name="dest" value="classes"/>
<property name="hello_jar" value="hello.jar" />
<target name="init">
<mkdir dir="${dest}"/>
</target>
<target name="compile" depends="init">
<javac srcdir="${src}" destdir="${dest}"/>
</target>
<target name="build" depends="compile">
<jar jarfile="${hello_jar}" basedir="${dest}"/>
</target>
<target name="run" depends="build">
<java classname="com.sharetop.antdemo.HelloWorld" classpath="${hello_jar}"/>
</target>
</project>


来看一下这个文件的内容,它描述了以下信息:工程的名字为HelloWorld,工程有四个target,分别是init、compil、build和run,缺省是run。compile只有一个任务javac,源文件位于src目录下,输出的类文件要放在classes目录下。build的任务是jar,生成的jar文件为hello.jar,它打包时以classes为根目录。而run则是执行这个HelloWorld类,用hello.jar作为classpath。这四个target之间有一个依赖关系,这种关系用depends来指定。即如果Target A依赖于Target B,那么在执行Target A之前会首先执行Target B。所以从下面运行缺省Target(run)的输出看,这四个Target的执行顺序是:init→compile→build→run。文件目录结构如图1所示。HelloWorld.java文件在src\com\sharetop\antdemo子目录下。




图1 ant_demo应用的目录结构



在命令行输入命令:
如果配置文件名不是build.xml,比如是build_front.xml,那么,可以使用-buildfile命令参数指定:

G:\myDoc\ant_demo>ant -buildfile build_front.xml


也可以单独执行指定的某个target,比如,只编译不打包执行,可以使用下面输入命令即可:

G:\myDoc\ant_demo>ant compile

在相应的目录下会找到编译出的HelloWorld.class文件。

再看看上面的build.xml配置文件,文件开头定义了3个属性,分别指定了源文件输出路径、类文件输出路径和生成的Jar文件名,后面对这些路径的引用都通过一个${property name}来引用。所以,要注意这样一个原则“目录的定义与目录的引用应该分开”。


build.xml文档编写:
[/color]
<?xml version="1.0"?>
<project default="dist" name="Project A">
    <description>
         一段描述信息,没有实际作用。
    </description>
    <!--property 元素相当于变量,存放一定的值,一旦给定以后不能改变,只能通过控制台命令行给初始值。
                 一般用 value 给其赋值,这里用 location 代替 value 是因为 location 属性专门设
                 计用于以平台无关的方式包含文件系统路径,也就是当前路径。-->
    <property name="srcDir" location="."/>
    <property name="buildDir" location="classes"/>
    <property name="distDir" location="dist"/>
    
    <!--一个target 元素就是一个任务,一个步骤,如果命令行没有指定开始任务,则由 project 元素的 default 属性决定要执行的任务-->
    <target name="init" description="在元素中指定描述信息!">
        <echo message="这里的信息将被输出到控制台!">
        <!--tstamp 元素一般不定义属性和内容,不产生任何输出;相反,它根据当前系统时间和日期设置 Ant 以下属性:
         属性                 说明                                     例子
         DSTAMP             设置为当前日期,默认格式为yyyymmdd         20031217
         TSTAMP             设置为当前时间,默认格式为hhmm             1603
         TODAY             设置为当前日期,带完整的月份             2003 年12 月17 日-->
        <tstamp/>
        <!--mkdir 元素用来创建目录 dir 属性用来指定目录路径-->
        <!--$ 引用 property 元素指定的 name 为 buildDir 的属性变量,这里为classes-->
        <mkdir dir="$"/>
        <mkdir dir="$"/>
        <!--文件操作:
             <copy file="src/Test.java" tofile="src/TestCopy.java"/> 把文件 Test.java 拷贝一份 TestCopy.java 
             <move file="src/Test.java" tofile="src/TestCopy.java"/> 把文件 Test.java 重新命名为 TestCopy.java
             <copy file="src/Test.java" todir="archive"/> 把文件 Test.java 从 src 目录复制一份到 archive 目录下
             <move file="src/Test.java" todir="archive"/> 把文件 Test.java 从 src 目录下移动到 archive 目录下
             <replace file="input.txt" token="old" value="new"/>replace 任务,它执行文件中的查找和替换操作。
             token 属性指定要查找的字符串,
             value 属性指定一个新的字符串,
             查找到的标记字符串的所有实例都被替换为这个新的字符串.
             替换操作将在文件本身之内的适当位置进行。为了提供更详细的输出,可把 summary 属性设置为
             true。这将导致该任务输出找到和替换的标记字符串实例的数目。
             <copy todir="archive">---使用模式匹配复制多个文件
                 <fileset dir="src">--fileset 代替 file 属性
                     <include name="*.java"/>--包含 src 目录下所有的 *.java 文件
                     <exclude name="*.class"/>--不包含 src 目录下所有的 *.class 文件
                 </fileset>
             </copy>-->
    </target>

    <!--target 元素的 depends 属性用来设置多个 target 元素之间的依赖关系,如果要执行某个任务,必须先执行 depends 属性指定的所有
         它所依赖的 target 元素,只有它所依赖的所有 target 元素都执行完了才能执行它自己-->
    <target name="com" depends="init">
        <!--javac 元素把 srcdir 指定目录下所有 *.java 文件编译成 *.class 文件到 destdir 指定的目录下!
             如果不指定 destdir 属性,那么默认编译到同一目录下。其他属性:
              classpath:等价于javac 的-classpath 选项。
              debug="true":指示编译器应该带调试信息编译源文件。
              fork="true":当你希望指定编译器的某些内存选项,或者需要使用一种不同级别的编译器的时候。该属性设置为“true”
              executable="d:sdk141 injavac":指定一个不同的 javac 可执行文件。
              memoryMaximumSize="128m":向上边指定的 javac 传递一个最大内存设置-->
        <javac srcdir="$" destdir="$"/>
    </target>

    <target name="dist" depends="com">
        <!--jar 元素:在编译 Java 源文件之后,结果类文件通常被打包到一个 JAR 文件中,这个文件类似 zip 归档文
             件。每个 JAR 文件都包含一个清单文件,它可以指定该 JAR 文件的属性。
             还可以把目录下的所有内容打包为 WAR 文件
             destfile:打包后的文件全名
             basedir:要打包的文件路径-->
        <jar destfile="$/package-$.jar" basedir="$">
            <!--manifest 属性允许指定一个用作该 JAR 文件的清单的文件。清单文件的内容还可以使用 manifest
                 任务在生成文件中指定。这个任务能够像文件系统写入一个清单文件,或者能够实际嵌套在 jar 之
                 内,以便一次性地创建清单文件和 JAR 文件。-->
            <manifest>
                <attribute name="Built-By" value="$"/>
                <attribute name="Main-Class" value="package.Main"/>
            </manifest>
        </jar>
        <jar destfile="$/package-src-$.jar" basedir="$"/>
    </target>

    <target name="zip" depends="dist">
        <!--zip 元素用来创建 zip 包,和 jar 元素相似-->
        <zip destfile="output.zip" basedir="output"/>
        <!--相同的语法也可用于创建 tar 文件。 还可以使用 GZip 和 BZip 任务来压缩文件。-->
        <tar destfile="output.tar" basedir="output"/>
        <gzip src="output.tar" zipfile="output.tar.gz"/>
        <!--解压缩和提取文件同样也很简单.-->
        <unzip src="output.tar.gz" dest="extractDir"/>
        <!--还可以包括 overwrite 属性来控制覆盖行为。默认设置是覆盖与正在被提取的归档文件中的条目相
             匹配的所有现有文件。相关的任务名称是 untar、unjar、gunzip 和 bunzip2。-->
    </target>

    <!--编写一个 clean目标来从目标目录移除生成的任何类文件是个很好的习惯。如果想要确
         保所有源文件都已编译,就可以使用这个任务。这种行为刻画了 Ant 的许多任务的特点:
         如果某个任务能够确定所请求的操作不需要执行,那么该操作就会被跳过。-->

       <!--delete 元素用来删除目录 $ 引用 property 元素指定的 name 为 buildDir 的属性变量-->
    <target name="clean">
        <delete dir="$"/>
        <delete dir="$"/>
    </target>
</project>

引用:http://hi.baidu.com/239666661/blog/item/e7bb2b107f2cff04203f2e4a.html
分享到:
评论

相关推荐

    ant中build.xml文档写法

    ant 中 build.xml 文档写法 Ant 是 Apache 软件基金会 JAKARTA 目录中的一个子项目,它是一个项目管理工具,具有跨平台性、操作简单、易于维护和书写等优点。Ant 的概念可能有些读者并不知道什么是 Ant 以及如何...

    ant打包sdk中build.xml

    总之,Ant的`build.xml`文件是项目构建的核心,当遇到低版本SDK导致的打包问题时,我们需要理解其工作原理,对文件进行适当的修改以确保兼容性。同时,保持良好的文档记录和持续的测试,将有助于提高开发效率和项目...

    ant-installer.jar.zip

    运行`ant compile`或`ant jar`命令,Ant会根据build.xml中的指令执行相应的任务。 Ant还支持依赖管理。在描述中提到的"jar.zip包下载,依赖包",意味着Ant可以处理项目依赖的第三方库。例如,你可以使用`&lt;classpath&gt;...

    apache-ant-1.10.5.rar

    Ant主要基于XML来编写构建脚本,这些脚本被称为build.xml,它们定义了构建过程的各个步骤和依赖关系。例如,你可以使用Ant来编译源代码、创建JAR文件、运行测试、生成文档,甚至部署应用程序。在描述中提到了cocos...

    apache-ant-1.8.2.rar

    Ant的核心理念是“一切都是文件”,它通过配置文件(通常命名为build.xml)来描述构建步骤,使得构建过程可重复且易于维护。 标题中的"apache-ant-1.8.2.rar"指示我们正在处理Apache Ant的一个特定版本,即1.8.2。...

    org.apache.tools.*需要的ant.jar包

    Ant主要由XML格式的构建文件(build.xml)驱动,这个文件定义了项目构建的各个步骤和规则。通过Java代码调用Ant,你可以自定义构建过程,比如编译源代码、创建JAR包、执行测试、部署应用等。下面我们将深入探讨如何...

    apache-ant-1.8.0.rar

    Ant是基于XML的,它的核心概念是构建文件(build.xml),这个文件定义了项目的构建过程和各种任务。XML格式使得构建过程具有良好的可读性和可维护性,同时也支持跨平台的构建需求。在描述中提到,"build的时候用的...

    org.apache.ant_1.7.1.v20100518-1145.zip

    Apache Ant的核心概念是构建文件(build.xml),这是一个XML文档,定义了构建过程中所需的任务和目标。这些任务包括编译源代码、创建JAR文件、运行测试、打包应用等。在Ant中,每个任务都是通过一个称为任务(task)的...

    ant-schematron.jar.zip

    通过这个库,开发者可以在Ant构建脚本中直接调用Schematron验证任务,检查XML文档是否符合预设的Schematron规则。 2. "ant.license.txt":这通常是开源软件的许可协议文件,对于"ant-schematron.jar.zip"来说,它...

    适应ant的build文档的编写

    `build.xml`文件的结构是基于XML的,遵循Ant的任务和属性定义规则。例如,一个简单的`build.xml`文件可能会包含以下元素: 1. **Project声明**:`&lt;project&gt;`标签是Ant配置文件的根元素,它包含了项目的名称(`name`...

    ant工具ant资源包

    Apache Ant 是一个由Java编写的构建工具,它主要用于自动化软件项目的构建、编译、测试和部署过程。这个“ant工具ant资源包”很可能是Apache Ant的一个版本,具体为1.8.3。Ant以XML为基础来描述项目构建的规则和依赖...

    ant-task-1.3.2.jar.zip

    开发者可以根据项目需求选择并引入合适的Ant任务库,通过编写XML格式的构建脚本来实现自动化构建流程。理解如何有效地利用这些任务库,对于优化Java项目的构建过程,提高开发效率至关重要。在实际操作中,我们需要...

    apache-ant-1.10.5.zip

    1. CONTRIBUTORS: 这个文件通常记录了对项目作出贡献的所有人的名单,包括开发者、测试者、文档编写者等,是开源项目的一种透明性和社区参与的体现。 2. INSTALL: 这是一个指导用户如何安装和配置Apache Ant的文档...

    ANT_build基本格式

    总结,`ANT_build基本格式`是指如何理解和编写Ant的构建文件`build.xml`,通过它来自动化Java项目的构建流程。了解并掌握Ant的基本结构和用法,将极大地提升项目构建的效率和一致性。在实际工作中,开发者可以根据...

    unity3d android 使用ant打包批处理.

    你可以参考Unity官方文档或者网络上的示例模板来编写。 2. **配置Project.properties**:在`Assets/Plugins/Android`目录下创建或修改`project.properties`文件,设置Android SDK版本和目标API级别。 3. **生成...

    hello-ant 项目 ,学习ant工具的build file. java

    通过学习Jakarta-Ant 1.6alpha版本的`build.xml`文件,用户可以更好地理解如何编写自己的构建脚本。 #### 二、Ant简介 Ant是一种流行的Java库和命令行工具,用于驱动构建、测试和部署Java应用程序。它是用纯Java...

    Ant-doc.zip

    Apache Ant的核心概念是构建文件(build.xml),这是一个XML文档,包含了所有构建步骤和相关配置。例如,它可能定义了如何编译源代码、如何运行单元测试、如何创建JAR或WAR文件以及部署应用程序到服务器的过程。通过...

    将项目打成war包

    特别简单 只需照着文档操作,就可实现。...再使用ant执行build.xml时必须在java的jre下的lib下的ext安装路径 把servlet-api.jar拷贝进去。 重新使用build.xml 命令打包即可.不然会出现javax.servlet.http 编译问题

    apache-ant-1.9.7.rar

    Ant的核心概念是构建文件(build.xml),这是一个XML格式的文件,其中定义了构建过程的各个任务。这些任务包括编译源代码、运行测试、生成JAR或WAR文件,以及其他与项目构建相关的操作。通过配置build.xml,开发者...

Global site tag (gtag.js) - Google Analytics