ant编译重设property的值
程序员文章站
2022-07-13 13:43:28
...
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>
上一篇: 数据结构——线段树c++
推荐阅读
-
C# 6.0的属性(Property)的语法与初始值详解
-
旗舰颜值的165Hz小金刚!蚂蚁电竞ANT27VQ显示器评测:满满都是性价比
-
ant编译重设property的值
-
plsqldeveloper中如何将序列的值重设为1.
-
ant-design-vue中的select选择器,对输入值的进行筛选操作
-
解决ant编译中出现“includeantruntime was not set”警告的问题
-
解决ant编译中出现“includeantruntime was not set”警告的问题
-
react ant Design手动设置表单的值
-
MySQL各种数据表类型重设自增起始值的方法_MySQL
-
我们使用了百度编译器后再MVC传值出现的问题。