Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
If statement 如何有条件地设置exec任务的arg值?_If Statement_Ant - Fatal编程技术网

If statement 如何有条件地设置exec任务的arg值?

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=

我有一个ant构建脚本,我应该修改它。具体地说,我应该设置subversion签出条件:当前只有主干被签出,如果需要,新版本应该签出给定的分支

<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。我将借此机会要求系统管理员进行升级。谢谢