我为自动部署编写了一个ant任务。
<target name="deployWMBComponent">
<for list="${esb.ci.WMB.deployment.target.brokers}" param="brokername" delimiter=" ">
<sequential>
<for list="${esb.ci.WMB.deployment.target.egs}" param="egname" delimiter=" ">
<sequential>
<exec executable="cmd.exe" failonerror="true" logerror="true" append="true" vmlauncher="false" dir="${esb.ci.WMB.dp.home}">
<arg value="/C" />
<arg value="mqsiprofile.cmd && mqsideployscript.bat" />
<arg value="-n" />
<arg value="${brokerConfigFilePath}\@{brokername}.broker" />
<arg value="-e" />
<arg value="@{egname}" />
<arg value="-w" />
<arg value="600" />
<arg value="-a" />
<arg value="${barLocalPath}" />
</exec>
</sequential>
</for>
</sequential>
</for>
</target>
所有属性都在属性文件中定义。我添加了一个新的布尔参数Default_Propagation
,如果上面提到的TRUE
脚本应该调用另一个ant任务,如果FALSE
上面的脚本应该直接执行。
答案 0 :(得分:0)
首先我会回答你的问题:
您需要(假设您使用的是蚂蚁&gt; 1.8)将if
和unless
添加到两个目标,并让一个依赖另一个目标。
<target name="deployWMBComponent" if="${default.propogation}" depends="other-thing">
添加新目标时
<target name="other-thing" unless="${default.propogation}">
一个工作示例:
<project name="foo" default="default-deploy">
<target name="default-deploy" if="${default.propogation}" depends="other-deploy">
<echo message="default" />
</target>
<target name="other-deploy" unless="${default.propogation}">
<echo message="other" />
</target>
</project>
使用:ant -Ddefault.propogation=FALSE
和ant -Ddefault.propogation=TRUE
请参阅if
上的ant docs和unless
了解完整的纲要。
要考虑的另一件事,现在你有默认和另一件事。它可能会有第三个。那么布尔值是不够的。
说完了 - 你真的想做什么?非默认传播有何不同?是不同的服务器名称(属性)? 为什么不在运行构建时调用一个目标或另一个目标? 当你觉得你需要蚂蚁的条件和循环时,通常是一个非常好的迹象,你不应该做你在蚂蚁做的事情。