1

別のスクリプトからターゲットを呼び出す ant スクリプトがあります。このターゲットが完全に実行されると、2 番目のスクリプトは「Build Successful」メッセージで終了します。これは、ユーザーを少し混乱させます。2番目の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>

2 番目のビルド ファイル ターゲットは次のようになります。

<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

ベスト プラクティスは、機能を共有するためにマクロ定義を使用することです。つまり、新しいプロジェクト スコープで別の ant インスタンスを開始する代わりに、startJboss ターゲットのマクロ定義を作成します
これにより、BUILD SUCCESSFUL 出力も回避されます。

編集

「BUILD SUCCESSFUL」文字列は、ant のDefaultLogger#getBuildSuccessfulMessage().
代わりに空の文字列またはその他の文字列を返す独自のロガーを作成できます。詳細については、ant マニュアルのリスナーとロガーを参照してください。

于 2013-01-18T11:31:52.647 に答える
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 に答える