Ant内置任务之include

一、概述

        include是Ant的内置任务,是Ant1.8.0版本新增的,可以在当前的project中包含另一个构建文件。这个任务严重依赖于ProjectHelper的实现,自己本身不会做任何事。如果使用的不是ant默认的ProjectHelper,这个任务不能保证一定能够运行。在执行过程中,会将另一个ant文件的内容读取到当前的project,并重写其target的name和depends列表。include是顶级任务不能在target中使用。

        include有两个特性:

  •         target重写:准确的说是target的name属性的重写,所有被包含文件中的target都会被重新命名为prefix.name,prefix为as属性的值或者被包含文件的project的name属性值,name为target原本的name值。所有被包含文件的target的depends属性中依赖的target的名称同样会冲新命名。如果一个文件包含一个前缀为a的文件,这个文件又包含一个前缀为b的文件,那么最后一个文件的target的前缀就是a.b。
  •         特殊属性:被包含的文件就像是在主文件中一样被处理。这使其易于理解,但是却导致它们不能参照它们的路径来引用文件和资源,因此,对于每一个被包含的文件,ant添加了一个含有被包含文件路径的属性。通过这个属性,被包含的文件可以相对于它们的位置引用文件和保存资源。假设引入一个文件include.xml的文件,其project的名称为include,那么就可以通过ant.file.include来获得包含文件的路径,就像在主文件使用ant.file一样。如果被抱恨文件的project没有设置name属性,那么就不能获得路径了。include支持通过url或classpath中引入资源,如果想知道当前包含的构建文件的类型,如之前的例子,可以通过ant.file.type.include来获得文件的类型(file或者url)。

二、属性

        file:要包含的文件,如果是相对路径,会相对于当前文件的路径(不是project的basedir)解析此路径。如果不设置此属性就必须在include中嵌套资源集合。
        optional:如果设置为ture,当包含的文件不存在时,不会停止构建,默认为false。
        as:指定被包含文件的target的前缀。如果被包含文件的project的name属性没有设置,那么就必须设置as属性,否则,默认为project的name属性的值。
        prefixSeparator:指定前缀与被包含文件的target的分隔符,默认为“.”。

三、简单示例

<!--  build.xml-->
<project>
	<include file="child/include.xml" optional="true" as="child" prefixSeparator="~" />
	<target name="build">
		<echo>target named same in build.xml</echo>
		<echo>${ant.file.include}</echo>
		<echo>${ant.file.type.include}</echo>
		<echo>${ant.file}</echo>
	</target>
</project>
<!-- include.xml in child-->
<project name="include">
	<target name="childtarget">
		<echo>target named childtarget in include.xml</echo>
		<echo>${ant.file.include}</echo>
		<echo>${ant.file.type.include}</echo>
		<echo>${ant.file}</echo>
	</target>
</project>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值