`

ant学习二(ant标签及build.xml)

    博客分类:
  • ant
阅读更多
1、build.xml
build.xml是ant的默认buildfile,如果想执行其它的buildfile,通过ant -buildfile filename可指定,在ant学习一中已有介绍。
Ant的buildfile是用XML写的。每个buildfile含有一个project,project中可包含多个target,多个property,多个taskdef等,通过ant targetname来调用指定的target。
2、project介绍
project有下面的属性:
name:项目名称
default:当没有指定target时使用的缺省target
basedir:用于计算所有其他路径的基路径。该属性可以被basedir property覆盖。当覆盖时,该属性被忽略。如果属性和basedir property都没有设定,就使用buildfile文件的父目录。
description:项目的描述以一个顶级的<description>元素的形式出现(参看description小节)。
3、target
    一个项目可以定义一个或多个target,一个target是一系列你想要执行的代码,执行时,你可以通过ant targetname选择执行哪个target。
target有下面的属性:
(1)name:target的名字
(2)depends:用逗号分隔的target的名字列表,也就是依赖表。 一个target可以依赖其他的target,通过depends属性指定依赖的target,Ant会依照depends属性中target出现的顺序从左到右依次执行,但是要注意,depends属性只指定了target应该被执行的顺序,如果依赖的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)if:执行target所需要设定的属性名,即if指定的属性必须被设定该target才会被执行。
(4)unless:执行target必须未设定的属性名,即如果该属性被设定,则不会执行该target。
    通过if和unless可以根据系统的状态(java version, OS, 命令行属性定义等等)来更好地控制build的过程。要想让一个target这样做,你就应该在target元素中,加入if(或unless)属性,值为target应该有所判断的属性。例如:
<target name="build-module-A" if="module-A-present"/>
<target name="build-own-fake-module-A" unless="module-A-present"/>
如果没有if或unless属性,target总会被执行。
(5)description:关于target功能的简短描述。
    可选的description属性可用来提供关于target的描述信息,如果设置了该属性,该任务可由-projecthelp命令行选项输出,没有设置则执行ant -p时不会显示该target。
4、task
    一个task是一段可执行的代码。
    一个task可以有多个属性(如果你愿意的话,可以将其称之为变量)。属性只可能包含对property的引用。这些引用会在task执行前被解析。
    下面是Task的一般构造形式:
         <name attribute1="value1" attribute2="value2" ... />
这里name是task的名字,attributeN是属性名,valueN是属性值。
    Ant有一套内置的(built-in)task,以及一些可选task,但你也可以编写自己的task。所有的task都有一个task名字属性。Ant用属性值来产生日志信息。
    可以给task赋一个id属性:
        <taskname id="taskID" ... />
这里taskname是task的名字,而taskID是这个task的唯一标识符。通过这个标识符,你可以在脚本中引用相应的task。例如,在脚本中你可以这样:
<script ... >
task1.setFoo("bar");
</script>
设定某个task实例的foo属性。在另一个task中(用java编写),你可以利用下面的语句存取相应的实例。
project.getReference("task1")
Ant自带很多task,可参考apache官网http://ant.apache.org/manual/
注意1:如果task1还没有运行,就不会被生效(例如:不设定属性),如果你在随后配置它,你所作的一切都会被覆盖。
注意2:未来的Ant版本可能不会兼容这里所提的属性,因为很有可能根本没有task实例,只有proxies。
5、Ant属性及property
    property标签可用于task的属性值的设定,一个project可以有很多的property。
     Ant属性(不是标签的属性)是指可以在一个构建文件中用作符号常量的名称-值对,属性的值是通过用${}中括起属性名的方式引用的。例如,如果一个属性junit_home的值为D:/junit/junit3.8.1(<property name="junit_home" value="D:\junit\junit3.8.1" /> ),你可以使用该属性${junit_home}以在编译时添加junit的JAR文件到classpath中。
Ant属性可以用下面几种方式定义:
1)Ant预定义
   Ant内置属性:basedir
              ant.file
              ant.version
              ant.project.name
              ant.project.default-target
              ant.project.invoked-targets
              ant.home
              ant.java.version  //ant检测到的JVM版本
              ant.core.lib
  另外还有一些java属性,ant也可以获取到:
                java.version   //Java的版本信息。
                java.home      //Java的根目录位置。
                java.vendor   //Java供应商
                java.vendor.url
                java.class.path  //Java类库的文件的位置。
                java.vm.version  //Java虚拟机版本
                java.vm.vendor  //Java虚拟机供应商
                java.vm.name    //Java虚拟机名称
                java.vm.specification.version
                java.vm.specification.vendor
                java.vm.specification.name
                java.class.version  //java类格式版本号
                java.class.path   //java类路径
                java.library.path
                java.io.tmpdir
                java.compiler
                java.ext.dirs
                line.separator  //行分隔符(在unix中是"/n")
                path.separator  //路径分隔符(在unix中是":")
                file.separator  //文件分隔符(在unix中是"/")
                user.home    //用户的home目录,在Linux和UNIX中经常用到
                user.name   //用户的账户名
                user.dir   //用户的当前工作目录
                os.name  //操作系统名称
                os.version  //操作系统版本
                os.arch     //操作系统版本
另外还有很多Ant预定义的属性,这里不一一列举
2)在Ant命令行使用-D选项定义,例如ant -Djunit_home=D:/junit/junit3.8.1
3)在一个构建文件中property定义
说明:target标签中的if、unless属性用于判断Ant属性是否存在,来决定该target是否执行。 

property特点:大小写敏感;
              不可改变,先到先得,谁先设定,之后的都不能改变
property标签的属性如下:
- name:the name of the property to set.
- value:the value of the property. One of these or nested text, when using the name attribute
- location:Sets the property to the absolute filename of the given file. If the value of this attribute is an absolute path, it is left unchanged (with / and \ characters converted to the current platforms conventions). Otherwise it is taken as a path relative to the project's basedir and expanded.
- refid:Reference to an object defined elsewhere. Only yields reasonable results for references to PATH like structures or properties.
- resource:the name of the classpath resource containing properties settings in properties file format. One of these, when not using the name attribute
file the location of the properties file to load.
- url:a url containing properties-format settings.
- environment:the prefix to use when retrieving environment variables. Thus if you specify environment="myenv" you will be able to access OS-specific environment variables via property names "myenv.PATH" or "myenv.TERM". Note that if you supply a property name with a final "." it will not be doubled; i.e. environment="myenv." will still allow access of environment variables through "myenv.PATH" and "myenv.TERM". This functionality is currently only implemented on select platforms. Feel free to send patches to increase the number of platforms on which this functionality is supported ;).
Note also that properties are case-sensitive, even if the environment variables on your operating system are not; e.g. Windows 2000's system path variable is set to an Ant property named "env.Path" rather than "env.PATH".
- classpath:the classpath to use when looking up a resource.  
- classpathref:the classpath to use when looking up a resource, given as - -reference to a <path> defined elsewhere..  
- prefix:Prefix to apply to properties loaded using file, resource, or url. A "." is appended to the prefix if not specified.  
- prefixValues:Whether to apply the prefix when expanding the right hand side of - properties loaded using file, resource, or url. Since Ant 1.8.2 No (default=false)
- relative:If set to true the relative path to basedir is set. Since Ant 1.8.0   (default=false)
- basedir:The basedir to calculate the relative path from. Since Ant 1.8.0

怎样设置
1)设置 name 和 value 属性值,比如: <property name="srcdir" value="${basedir}/src"/>
2)设置 name 和 refid 属性值,比如: <property name="srcpath" refid="dao.compile.classpath"/> ,其中 dao.compile.classpath 在别的地方定义。
3)设置 name 和 location 属性值,比如: <property name="srcdir" location="src"/> ,即将 srcdir 的值设     置为:当前项目根目录的 /src 目录。
4)设置 file 属性值,比如: <property file="build.properties"/> , 导入 build.properties 属性文件中的属性值
5)设置 resource 属性值,比如: <propety resource="build.properties"/>, 导入 build.properties 属性文件中的属性值
6)设置 url 属性值,比如: <property url="http://www.blogjava.net/wiflish/build.properties"/>, 导入 http://www.blogjava.net/wiflish/build.properties 属性文件中的属性值。
7)设置环境变量,比如: <property environment="env"/> ,设置系统的环境变量为前缀 env.
     <property name="tomcat.home" value="${env.CATALINA_HOME}"/> 将系统的 tomcat 安装目录设置到tomcat.home 属性中。
分享到:
评论

相关推荐

    一个常用的ant的build.xml

    在IT行业中,Ant是一个广泛应用的构建工具,尤其在Java项目中。...对于初学者,学习阅读和编写`build.xml`是掌握Ant工具的关键。同时,它也是资深开发者进行持续集成和持续交付(CI/CD)的基础工具之一。

    ant的build.xml模板

    《Ant的build.xml模板详解与应用》 在软件开发领域,构建工具是不可或缺的一部分,它帮助开发者自动化地完成编译、测试、打包等任务。Apache Ant作为Java领域的一款经典构建工具,以其灵活性和强大的功能深受广大...

    生成ANT所需要的Build,xml文件

    "生成ANT所需要的Build.xml文件"这一主题,核心在于如何通过Python程序自动生成ANT的配置文件——build.xml。 首先,我们要理解ANT的build.xml文件。它是ANT的核心,包含了一系列的构建目标和任务。这些目标定义了...

    jmeter+ant 持续集成build.xml文件

    jmeter+ant 持续集成build.xml文件,直接使用ant命令执行jmeter脚本文件,得到图形测试报告

    jmeter+ant所需要的build.xml文件

    第一次做jmeter+ant自动化接口测试,需要build文件,开始直接copy博客中的内容,格式不对,调试好久不成功;后发现在jmeter/extras文件夹中有一个build文件,copy出来根据需要修改下,成功了,特上传自选供大家使用...

    ant 较完整的build.xml解释

    ### ant 较完整的build.xml解释 #### 一、Ant简介及优势 Ant 是一款开源的构建工具,主要用于Java项目的构建和部署。与传统的构建工具如Make相比,Ant具有诸多优势,尤其是在跨平台方面表现突出。Ant的核心优势...

    Jmeter+ant实现测试报告build.xml和报告模板jmeter-results-newreport.xsl

    3. **build.xml文件详解**:`build.xml`是Ant的构建文件,其中包含了一系列的任务和目标。例如,你可以定义一个目标来启动JMeter,另一个目标来生成测试报告,甚至还有一个目标用来发送测试结果的邮件通知。在描述中...

    ant build.xml 详解

    《Ant build.xml详解——构建Java项目的关键》 Apache Ant,作为一个开源的自动化构建工具,是Java开发者不可或缺的利器。它的核心在于一个名为`build.xml`的配置文件,它定义了项目的构建过程,包括编译、测试、...

    ant build.xml 使用实例

    在"ant build.xml 使用实例"中,我们可以通过以下步骤学习和实践Ant的基本用法: 1. **安装与设置**:首先,你需要下载并安装Apache Ant。将Ant添加到系统环境变量`PATH`中,以便在任何目录下都能运行`ant`命令。 ...

    Ant_的最完整build.xml解释,Ant入门与进阶

    《Ant的最完整build.xml解释:Ant入门与进阶》 Ant,作为Java世界中的一个构建工具,由Apache软件...通过阅读《Ant的最完整build.xml解释:Ant入门与进阶》这样的学习资料,开发者可以系统地学习和掌握Ant的使用方法。

    ant打包的build.xml文件

    一个普通java程序用ant打包的列子,完整的,里面采用的是eclipse自带的编译插件进行的打包,需要结合eclipse中的插件一起使用

    ant编译java web的build.xml文件

    《Ant构建Java Web应用:深度解析build.xml》 在软件开发过程中,自动化构建工具起着至关重要的作用,它们能够帮助开发者高效地管理项目,确保代码的编译、测试和部署等流程的一致性和可靠性。Apache Ant是Java领域...

    ant打包ant的build.xml的详解

    Ant 打包 ant 的 build.xml 详解 Ant 是一个流行的自动化构建工具,广泛应用于软件开发和项目自动化构建中。本文将详细介绍 Ant 的环境变量配置和 build.xml 文件的配置详解。 第一步:安装 Apache Ant 在开始...

    ant+jenkins-build.xml

    jmeter+ant+jenkins---build.xml文件,下载运行即可成功

    ant中build.xml文档写法

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

    ANT-build.xml命令详解

    **ANT-build.xml命令详解** Apache Ant 是一个Java平台上的开源构建工具,它通过XML格式的配置文件(如`build.xml`)来定义构建任务。Ant的设计理念是“简单就是美”,它使得Java项目的构建过程变得可配置且易于...

    ant +build.xml 文件Jenkins部署javaEE项目

    ant +build.xml 文件Jenkins部署javaEE项目,助力成功自动化部署。ant +build.xml 文件Jenkins部署javaEE项目,助力成功自动化部署。ant +build.xml 文件Jenkins部署javaEE项目,助力成功自动化部署。ant +build.xml...

    ant build.xml编写

    《Ant build.xml构建详解》 ...通过学习和掌握`build.xml`的编写,我们可以更好地利用Ant工具提高开发效率,降低维护成本。无论是在小型项目还是大型企业级应用中,Ant都展现出了其强大的构建能力和广泛的应用场景。

    ant打包sdk中build.xml

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

Global site tag (gtag.js) - Google Analytics