1

我有一个 ant 脚本,它从另一个脚本调用目标。当这个目标完全执行时,第二个脚本退出并显示“构建成功”消息,这对用户来说有点混乱。我不希望第二个 ant 脚本在其退出时回显“构建成功”。我的代码是

<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 完成执行时,我希望它不打印“构建成功”

[sshexec] BUILD SUCCESSFUL
  [sshexec] Total time: 10 seconds
4

2 回答 2

0

由于您将输出捕获到文件(<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" >
于 2013-01-18T22:49:54.657 回答
0

最佳实践是使用宏定义来共享功能,这意味着为您的 startJboss 目标创建宏定义,而不是使用新的项目范围启动另一个 ant 实例。
这也将避免 BUILD SUCCESSFUL 输出。

编辑

“BUILD SUCCESSFUL”字符串来自 ant's DefaultLogger#getBuildSuccessfulMessage()
您可以编写自己的记录器,它返回一个空字符串或任何其他字符串,有关详细信息,请参阅ant 手动侦听器和记录器

于 2013-01-18T11:31:52.647 回答