5

Ant exec タスクでタイムアウト属性を設定し、タスクがプロセスをタイムアウトした場合、タイムアウトを検出する方法はありますか? 結果、出力、またはエラーのプロパティに、タイムアウトを示す有用なものが見当たりません。

4

1 に答える 1

3

<exec>タイムアウトのためにサブプロセスを強制終了すると、親 Ant プロセスはメッセージをログに記録しますTimeout: killed the sub-process。ただし、<exec>リダイレクタはサブプロセスからの出力のみをキャプチャするため、<exec> outputPropertyまたはにタイムアウトの表示はありませんerrorProperty

サブプロセスがタイムアウトしたことを示すプロパティを設定する<record>には、次の例に示すように、タスクを使用して Ant のログ出力をキャプチャできます。

<target name="exec-timeout">
  <record name="exec.log" action="start" />
    <exec executable="java" timeout="1500">
      <arg line="-jar /path/to/executable.jar" />
    </exec>
  <record name="exec.log" action="stop" />      

  <condition property="timed-out" else="false">
    <resourcecontains resource="exec.log"
        substring="Timeout: killed the sub-process" />
  </condition>
  <delete file="exec.log" />

  <echo message="exec timed out: ${timed-out}" />
</target>

出力

exec-timeout:
     [exec] Timeout: killed the sub-process
     [exec] Result: 143
     [echo] exec timed out: true

BUILD SUCCESSFUL
Total time: 2 seconds
于 2012-09-19T20:27:35.527 に答える