在ant退出目标后避免打印构建成功

时间:2013-01-18 07:37:48

标签: ant

我有一个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

2 个答案:

答案 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" >