SiB*_*SiB 11 apache ant if-statement exec
我只使用apache-ant而不是 ant-contrib
我有一个ant目标
<target name="stop" depends="init" >
...
</target>
Run Code Online (Sandbox Code Playgroud)
我想在其中调用exec任务.
如果变量的值HOST_NAME是all
<exec executable="${executeSSH.shell}" >
<arg value="-h ${HOST_NAME}" />
<arg value="-i ${INSTANCE}" />
<arg value="-w 10" />
<arg value="-e ${myOperation.shell} " />
<arg value=" -- " />
<arg value="${INSTANCE} ${USERNAME} ${PASSWORD}" />
</exec>
Run Code Online (Sandbox Code Playgroud)
如果变量的值HOST_NAME是anything else
<exec executable="${executeSSH.shell}">
<arg value="-h ${HOST_NAME}" />
<arg value="-i ${INSTANCE}" />
<arg value="-e ${myOperation.shell} " />
<arg value=" -- " />
<arg value="${INSTANCE} ${USERNAME} ${PASSWORD}" />
</exec>
Run Code Online (Sandbox Code Playgroud)
但我只想写一个任务而不是重复exec.我已经使用了HOST_NAME参数但是如何处理-w 10两个调用中不同的第二个参数.
我已经尝试了几种方法,通过使用搜索SO condition,if else但似乎没有什么适用于exec或arg.
Kev*_*lou 11
您可以使用条件任务:
<condition property="my.optional.arg" value="-w 10" else="">
<equals arg1="${HOST_NAME}" arg2="all" />
</condition>
<exec executable="${executeSSH.shell}" >
<arg value="-h ${HOST_NAME}" />
<arg value="-i ${INSTANCE}" />
<arg line="${my.optional.arg}" />
<arg value="-e ${myOperation.shell} " />
<arg value=" -- " />
<arg value="${INSTANCE} ${USERNAME} ${PASSWORD}" />
</exec>
Run Code Online (Sandbox Code Playgroud)
尝试使用macrodef.以下示例未经过测试.
<macrodef name="callSSH">
<element name="extArgs" optional="y"/>
<sequential>
<exec executable="${executeSSH.shell}" >
<arg value="-h ${HOST_NAME}" />
<arg value="-i ${INSTANCE}" />
<extArgs/>
<arg value="-e ${myOperation.shell} " />
<arg value=" -- " />
<arg value="${INSTANCE} ${USERNAME} ${PASSWORD}" />
</exec>
</sequential>
</macrodef>
<target name="stop" depends="init" >
<if>
<equals arg1="${HOST_NAME}" arg2="all"/>
<then>
<callSSH>
<extArgs>
<arg value="-w 10" />
</extArgs>
</callSSH>
</then>
<else>
<callSSH>
<extArgs/>
</callSSH>
</else>
</if>
</target>
Run Code Online (Sandbox Code Playgroud)
或者如果你不使用contribs:
<target name="sshExecWithHost" if="HOST_NAME">
<callSSH>
<extArgs>
<arg value="-w 10" />
</extArgs>
</callSSH>
</target>
<target name="sshExecNoHost" unless="HOST_NAME">
<callSSH/>
</target>
<target name="sshSwitch" depends="sshExecNoHost,sshExecWithHost">
</target>
<target name="stop" depends="init,sshSwitch" >
</target>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10196 次 |
| 最近记录: |