2012-02-09 2 views
0

は、私は窓のある仕事は、このコードのクロスプラットフォームであるAntビルドから2番目のAntビルドをスポーンするには、より良い方法がありますか?ここ

<target name="forknewant"> 
<property name="ant.dir" value="${basedir}/apache-ant-1.8.2" /> 
<exec executable="cmd" dir="${project.loc}"> 
    <arg value="/K" /> 
    <arg value="start" /> 
    <arg value="&quot;${project.title}&quot;" /> 
    <arg line="cmd.exe /k ant" /> 
    <arg value="-Dtest.haltonfailure=no" /> 
    <env key="CLASSPATH" value="" /> 
    <env key="ANT_HOME" value="${ant.dir}" /> 
    <env key="PATH" value="${ant.dir}/bin;${java.home}/bin" /> 
</exec> 
</target> 

要件は、新しいビルドをforkすることで、親ビルドが待機しないと、コンソール出力が表示されていることを持っているものです。

私はこの作業をWindowsで知っていますが、私はそれを行うためのクロスプラットフォームの方法を探しています。

+0

あなたはantの[ant task](http://ant.apache.org/manual/Tasks/ant.html)を使用できますか? – Raghuram

答えて

1

別のAntスクリプトを実行するantタスクでは、あなたが望むことを達成できるかもしれません。

<ant antfile="build.xml" 
    dir="${project.loc}" 
    inheritAll="false" 
    inheritRefs="false" /> 

ただし、親ビルドファイルはこのタスクが完了するまで待機します。

parallelタスクを使用していくつかのことを並行して実行することを検討できます。あなたが何をしたいのかによって、これはあなたの問題を解決するかもしれません。 parallelのドキュメントの並行性に関する警告を必ず読んでください。

parallelは、実行されるすべてのタスクが完了するまで待機します。ただし、これを避けるにはdaemonsタグを使用できます。だから、あなたがなりを求めるものに近いもの:

<parallel> 
    <daemons> 
     <ant antfile="build.xml" 
      dir="${project.loc}" 
      inheritAll="false" 
      inheritRefs="false" /> 
    </daemons> 
</parallel> 

これは、それが終了するのを待っていない、${project.loc}でAntビルドファイルを実行するウィル。重要な注意点が1つあります。メインビルドファイルが最初に終了すると、生成ビルドのプロセスが終了します。これはすべてparallel文書で説明されています。

関連する問題