gpt4 book ai didi

apache - 根据变量的值将参数传递给 apache-ant exec 任务

转载 作者:行者123 更新时间:2023-12-04 01:52:15 25 4
gpt4 key购买 nike

我只用 apache-ant不是 ant-contrib
我有一个 ant目标

<target name="stop" depends="init" >
...
</target>

我想在其中调用 exec任务。

如果变量的值 HOST_NAMEall
<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>

如果变量的值 HOST_NAMEanything 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>

但我只想写一个任务,不再重复 exec .我用过 HOST_NAME参数但如何处理第二个参数 -w 10这在两次调用中都不同。

我通过使用 condition 搜索 SO 尝试了几种方法。和 if else但似乎没有什么适用于 execarg .

最佳答案

尝试使用宏定义。以下示例未经测试。

<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>

或者,如果您不使用 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>

关于apache - 根据变量的值将参数传递给 apache-ant exec 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11840284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com