我有一个ant脚本,它从另一个脚本调用目标。当该目标完全执行时,第二个脚本以“Build Successful”消息退出,这对用户来说有点混乱。我不希望第二个蚂蚁脚本在退出时回显“Build Successful”。 我的代码是
<target name="startRemoteJboss" description="Starts Remote Instance of Jboss">
<echo message="starting Remote Jboss" />
<sshexec output="remoteJboss.txt" trust="true" host="${jboss.remote.host}" username="${jboss.remote.username}" password="${jboss.remote.password}" command="ant -f build.xml startJboss" port="${jboss.remote.port}" failonerror="no"/>
</target>
第二个构建文件目标看起来像
<target name="startJboss" description="Starts Jboss">
<echo message="starting Jboss" />
<exec executable="${jboss.home}/bin/run.sh" spawn="true">
<arg line="-b 0.0.0.0 -c default" />
</exec>
<sleep seconds="150" />
<echo message="Jboss is UP" />
</target>
当startJboss完成执行时,我希望它不打印“Build Successful”
[sshexec] BUILD SUCCESSFUL
[sshexec] Total time: 10 seconds
答案 0 :(得分:0)
最佳做法是使用macrodef进行共享功能,意味着创建startJboss目标的macrodef,而不是使用新的项目范围启动另一个ant实例。
这也将避免BUILD SUCCESSFUL输出。
的修改
&#34;建立成功&#34;字符串来自ant DefaultLogger#getBuildSuccessfulMessage()
。
您可以编写自己的记录器来返回空字符串或任何其他字符串,有关详细信息,请参阅ant manual listeners and loggers。
答案 1 :(得分:0)
由于您正在将输出捕获到文件(&lt; sshexec output =“remoteJboss.txt”...),因此您应该能够从中删除这些行,例如:
<concat>
<fileset dir="." includes="remoteJboss.txt" />
<filterchain>
<linecontains negate="true">
<contains value="[sshexec] BUILD SUCCESSFUL"/>
</linecontains>
<linecontains negate="true">
<contains value="[sshexec] Total time:"/>
</linecontains>
</filterchain>
</concat>
要打印输出给用户(假设您已经使用了concat),或者使用destFile属性指定输出文件的副本,其中这些行被删除:
<concat destfile="remoteJboss_short.txt" >