If statement 如何有条件地设置exec任务的arg值?
我有一个ant构建脚本,我应该修改它。具体地说,我应该设置subversion签出条件:当前只有主干被签出,如果需要,新版本应该签出给定的分支If statement 如何有条件地设置exec任务的arg值?,if-statement,ant,If Statement,Ant,我有一个ant构建脚本,我应该修改它。具体地说,我应该设置subversion签出条件:当前只有主干被签出,如果需要,新版本应该签出给定的分支 <target name="do-svn-checkout" depends="init" <property name="branch" value=""/> <exec executable="svn"> <arg value="checkout"/> <arg value=
<target name="do-svn-checkout" depends="init"
<property name="branch" value=""/>
<exec executable="svn">
<arg value="checkout"/>
<arg value="-r"/>
<arg value="HEAD"/>
<arg value="http://t01/java/trunk"/>
<arg value="zzz"/>
<arg value="--password"/>
<arg value="xxx"/>
<arg value="--username"/>
<arg value="yyy"/>
</exec>
</target>
您可以定义一个包装器目标,它依赖于另外两个目标—其中一个进行主干签出,另一个进行分支签出—并且每个目标都依赖于您的可选分支属性的存在
您可以进一步将exec调用抽象为一个可以向其传递主干或分支url的对象
例如:
<project name="test" default="do-svn-checkout">
<target name="do-svn-checkout" depends="do-svn-trunk-checkout, do-svn-branch-checkout"/>
<target name="do-svn-trunk-checkout" unless="branch">
<svn-checkout svn-url="http://t01/svn/java/trunk"/>
</target>
<target name="do-svn-branch-checkout" if="branch">
<svn-checkout svn-url="http://t01/svn/hlfg/HLFG/java/branch/${branch}"/>
</target>
<macrodef name="svn-checkout">
<attribute name="svn-url"/>
<sequential>
<echo message="svn-url=@{svn-url}"/>
</sequential>
</macrodef>
</project>
定义了分支属性的输出:
do-svn-trunk-checkout:
[echo] svn-url=http://t01/svn/java/trunk
do-svn-branch-checkout:
do-svn-checkout:
do-svn-trunk-checkout:
do-svn-branch-checkout:
[echo] svn-url=http://t01/svn/hlfg/HLFG/java/branch/mybranch
do-svn-checkout:
当使用Ant>=1.9.3时,它与
(但由于Ant 1.9.1中存在缺陷,您至少应该使用Ant 1.9.3。)
不要忘记激活该功能的名称空间,例如:
<project
xmlns:if="ant:if"
xmlns:unless="ant:unless"
>
<property name="foobar" value=" "/>
<echo if:blank="${foobar}">foobar blank !</echo>
<echo unless:blank="${foobar}">foobar not blank !</echo>
</project>
foobar blank!
foobar不是空的!
在您的情况下,类似于:
<target name="do-svn-checkout" depends="init"
<property name="branch" value=""/>
<exec executable="svn">
<arg value="checkout"/>
<arg value="-r"/>
<arg value="HEAD"/>
<arg value="http://t01/java/trunk" if:blank="${branch}">
<arg value=".." unless:blank="${branch}">
<arg value="zzz"/>
<arg value="--password"/>
<arg value="xxx"/>
<arg value="--username"/>
<arg value="yyy"/>
</exec>
</target>
Ant 1.9.x对我来说是新的。酷。刚刚检查:我已经运行了1.8.4。我将借此机会要求系统管理员进行升级。谢谢