ant已经有N多种替代方案了,但也不是ant就没有可用之外了,它的跨平台性还是有很大的优势。
android就经常是使用ant来构建的。
ant脚本中property默认是不能重新设置值的,第一次定义之后,在整个project执行过程中是不会再变的。
最简单的定义方式如下:
<property name="build.target" value="release" />
但是在我们的编译脚本中经常有可能需要用到可以变的值,另一种值设值方式可以满足我们:
<var name="build.target" value="release" />
定义变量可以随时重新设值,但是又有一点,如果我们需要使用condition来条件设值的时候,不好意思,不支持var。
<condition property="BATCH_INPUT" value="${env.BATCH_INPUT}" else="${local.BATCH_INPUT}"> <isset property="env.BATCH_INPUT" /> </condition>
直接点,要property支持重设,也不是不可能,在jdk 1.6之后,使用contrib可以支持,需要定义一个重设的脚本,需要下ant-contrib-0.6.jar到ant的lib目录下:
<scriptdef name="propertyreset" language="javascript" description="Allows to assign @{property} new value"> <attribute name="name"/> <attribute name="value"/> project.setProperty(attributes.get("name"), attributes.get("value")); </scriptdef>
同时增加以下一行声明:
<taskdef resource="net/sf/antcontrib/antlib.xml" />
用法如下:
<propertyreset name="chanel" value="${chanelname}"/>
这样子就可以直接使用新值了。
本帖完整的示例:
<project name="test" default="testA" basedir="."> <!--必须定义这个标签--> <taskdef resource="net/sf/antcontrib/antlib.xml" /> <scriptdef name="propertyreset" language="javascript" description="Allows to assign @{property} new value"> <attribute name="name"/> <attribute name="value"/> project.setProperty(attributes.get("name"), attributes.get("value")); </scriptdef> <property name="nameA" value="A"/> <!--重新定义property,不起作用--> <property name="nameA" value="B"/> <var name="nameB" value="A"/> <!--var可以随意设置值--> <var name="nameB" value="B"/> <property name="nameC" value="A"/> <!--使用自定义的脚本重新设置值--> <propertyreset name="nameC" value="B"/> <target name='testA'> <echo>${nameA}</echo> <echo>${nameB}</echo> <echo>${nameC}</echo> </target> </project>
相关推荐
ant 编译jar包
使用Ant编译打包
ant脚本编译出jar
Ant编译后的zookeeper源码 版本:zookeeper-release-3.4.11、apache-ant-1.9.14 可直接导入eclipse或idea
介绍了如何通过ant进行java web工程的编译操作的详细配置
作为apache下的一个编译工具,可以用来编译一些较大的java web项目,简单实用方便!
Ant编译环境配置 文章《使用ant编译之签名问题》的相关资料。主要讲一些Ant编译问题。
Apache Ant,是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。由Apache软件基金会所提供。
本文档中的内容多是从实际开发中总结出来的。 ANT 最佳实践 http://www.ossez.com/forum.php?mod=viewthread&tid=13460&fromuid=426
适合在ant下进行编译的工具,以及一些checkstyle,方便实用
Ant 编译 多目录demo,同时编译多个目录的Ant demo代码。
ant编译staf插件
在编译flex/java工程是采用Ant自动编译,将编译好的工程进行打包发布.
NULL 博文链接:https://liuna718-163-com.iteye.com/blog/1859773
sdfasdfsdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasda
Ant编译打包android工程,签名,多渠道
ant是构建工具,跨平台 因为ant是使用java实现的,所以它跨平台 使用简单--与ant的兄弟make比起来 语法清晰--同样是和make相比 功能强大--ant能做的事情很多,可能你用了很久,你仍然不知道它能有多少功能。当你自己...
ant递归编译测试源码,基于import macrodef subant if available dirname
ant编译时抛出OutOfMemoryError.doc