Ant元素

一、概述

        Ant的构建文件是xml格式的。每个构建文件包含一个project和至少一个(default)target元素。Target包含task元素。每个task元素包含一个id属性,可以通过属性的值来对其进行引用,id属性值必须是唯一的。

二、元素

    Project

        project有三个属性:
  •         name:project的名称。
  •         default:在没有提供target的情况下使用的缺省target。
  •         basedir:所有路径计算的基本路径。如果设置为相对路径,那么此路径会相对于构建文件所在的目录进行解析。

    Description

        description标签用于描述project。

    Target

        每个project定义一个或多个target,每个target就是一组你想要执行的任务。当执行ant时,可以选择你想要执行的target,如果没有指定target,就使用Project中的default值。
        target可以依赖于其他的target,ant能够保证其他的target在当前的target之前执行。Ant尝试按照它们在depends中出现的顺序执行(从左到右)。但要注意的是,一个target可能会比depends中它之前的target更早执行。
        例如:
<target name="A"/>
<target name="B" depends="A"/>
<target name="C" depends="B"/>
<target name="D" depends="C,B,A"/>
        假设我们要执行D,根据depends属性,你可能认为执行顺序应该是C、B、A,最后是D。但是实际上由于C依赖于B,B又依赖于A,所以实际的执行顺序是A、B、C、D。在如上D中的依赖链中的target,每个target只执行一次,即使不止一个target依赖于它。
        如果target有if或者unless属性,那么这个target也有执行的可能。比如,可以根据系统的状态(java版本、系统、命令行属性等)更好的控制构建过程。
        例如:
<target name="build-module-A" if="module-A-present"/>
<target name="build-own-fake-module-A" unless="module-A-present"/>
        如果module-A-present属性被设置了值,那么第一个target就会执行,而第二个target不会执行。
        在if/unless中只允许指定一个属性名,如果想要检查多个条件,可以使用依赖target来计算检查结果。
<project name="myFirstBuildXml">
<target name="mytarget" depends="myTargetCheck" if="cons">
	<echo>c1:true and c2:false</echo>
</target>
<target name="myTargetCheck" >
	<echo>run myTargetCheck</echo>
	<condition property="cons">
		<and>
			<equals arg1="${c1}" arg2="true"/>
			<equals arg1="${c2}" arg2="false"/>
		</and>
	</condition>
</target> 
</project>
        if和unless属性只启用或禁用它们所依附的target,它们不能控制这些target所依赖的target是否执行。实际上在target将要执行时它们才会被评估,此时它们依赖的target经执行完了。
        可选属性description用来给命令行选项-projecthelp提供此target的简短描述,如果target没有description,则认为它是内部的,除非使用-verbose或-debug选项,否则不会被列出。
        将任务tstamp放到所有target都依赖的即所谓的初始化target中是一个很好的做法。确保初始化target在依赖列表的首位。
<project name="myFirstBuildXml">
 <target name="init">
 	<tstamp>
		<format property="current.year" pattern="yyyy"/>
		<format property="DSTAMP" pattern="yyyy-MM-dd"/>
		<format property="TSTAMP" pattern="HH:mm:ss"/>
		<!-- datetime format that is safe to treat as part of a dotted version -->
		<format property="dateversion" pattern="yyyy.MM.dd.HH.mm.ss" />
  </tstamp>
 </target>
<target name="mytarget" depends="init,myTargetCheck" if="cons">
	<description>
this is mytarget description
	</description>
</target>
<target name="myTargetCheck" depends="init" >
	<echo>run myTargetCheck ${current.year}</echo>
	<condition property="cons">
		<and>
			<equals arg1="${c1}" arg2="true"/>
			<equals arg1="${c2}" arg2="false"/>
		</and>
	</condition>
</target>
</project>
        从Ant1.6开始,如果只有几个task,可以将这些task直接放在project元素下。
<project name="myFirstBuildXml">
        <tstamp/>
</project>
        target的名称可以是XML文件中有效的任何字母数字或这字符,包括空字符串“”,标点符号(如“,”),空格(“ ”)等。要避免使用这些字符,因为这些字符在命令行或IDE中会引起混乱。以连字符开头的target名称是有效的,比如“-restart”,以此来命名不应当直接从命令行中调用的target。
        target属性:
  •                 name:target名称。每个target都必须有name,并且是唯一的。
  •                 depends:target依赖的以逗号分隔的target列表。
  •                 if:为了执行target,必须设置的属性的名称。
  •                 unless:为了执行target,必须不能设置的属性的名称。
  •                 description:对target的简短描述。
  •                 extensionOf:将当前target添加到命名的extension-point的依赖列表中(Ant1.8.0+)。
  •                 onMissingExtensionPoint:如果extension-point指定的扩展点不存在,如何处理(fail/warn/ignore,默认fail)?需要与extensionOf联合使用,不能单独使用(Ant1.8.2+)。

    Property

        property用于在project中设置属性,属性名区分大小写。属性值一旦设置完就不可再改变。
        property属性:
  •                 name:属性名。
  •                 value:属性值。
  •                 location:将指定文件的绝对文件名赋值给属性。如果是绝对文件名保持不变,否则,将会解析为相对于project的basedir的绝对路径。
  •                 refid:引用别处定义的对象。只有对路径结构或属性的引用才会生成正确的结果(当使用name时,可以使用value、location、refid或者嵌套文本中的一个)。
  •                 resource:classpath中属性文件格式的资源文件名称。
  •                 file:要加载的属性文件的位置。
  •                 url:包含属性格式文件的url。
  •                 environment:通过设置前缀来访问系统属性(当不使用name时,可以使用resource、file、url、environment中的一个)。
  •                 classpath:查找资源时使用的类路径。
  •                 classpathref:查找资源时使用的类路径的引用。
  •                 prefix:将通过file、resource、url加载的属性的属性名前加上前缀。
  •                 prefixValues:如果属性文件使用属性扩展时,设置为true(目前无论true还是false好像都一样,需要进一步验证)。
  •                 relative:是否使用相对路径,默认为false。与location联合使用,如果为true,属性值将被设置为相对与basedir的相对文件名。
  •                 basedir:用于计算相对路径的basedir,默认为project的basedir。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值