2012-02-09 40 views
0

这是我有窗户,工作有没有更好的方法来从一个交叉平台的蚂蚁构建产生第二个蚂蚁构建?

<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任务](http://ant.apache.org/manual/Tasks/ant.html)? – Raghuram 2012-02-10 06:55:12

回答

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构建文件,而不是等待它完成。但是有一个重要的警告:如果主构建文件首先完成,它将终止生成的构建过程。这在parallel文档中有所解释。