有没有更好的方法从一个跨平台的蚂蚁构建Spawn第二个ant构建?

时间:2012-02-09 16:34:28

标签: ant

以下是我使用windows

的方法
<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>

此代码的要求是分叉新构建,父构建不等待并显示控制台输出。

我知道这项工作适用于Windows,但我正在寻找跨平台的方法。

1 个答案:

答案 0 :(得分: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 doc。

中都有解释