在Gradle中并行执行

时间:2016-09-02 09:59:02

标签: java gradle ant

我正在将构建从Ant迁移到Gradle并尝试重写此代码块:

 <parallel>
            <exec executable="npm">
                <arg value="run"/>
                <arg value="dev"/>
            </exec>
            <java className="foo.bar.Launcher" fork="true">
                <classpath>
                    <path refid="project.classpath"/>
                </classpath>
            </java>
 </parallel>

但我没有找到类似于并行标记的东西,只有Java并发或其他解决方法的解决方案。 Gradle是否有一些正确的方法可以在没有解决方法的情况下并行执行某些操作?

1 个答案:

答案 0 :(得分:1)

我认为并行执行任务(在同一个项目中)充其量只是一个孵化功能(或者尚未提供)(see doc)。

但是,在您的情况下,请注意Gradle包含Ant Builder。因为您没有尝试并行运行任务,所以它可能是一个直接的端口。 (Here is a discussion使用ant.parallel。)

为了说明,请考虑这个shell脚本wait.sh

sleep $1 
echo $2 >> wait.log

以下任务:

task doItSerial << {
    ant.exec(executable: "${projectDir}/wait.sh") {
        arg(value: 10)
        arg(value: "TRACER A")
    }
    ant.exec(executable: "${projectDir}/wait.sh") {
        arg(value: 10)
        arg(value: "TRACER B")
    }
}

task doItParallel << {
    ant.parallel {
        ant.exec(executable: "${projectDir}/wait.sh") {
            arg(value: 10)
            arg(value: "TRACER A")
        }
        ant.exec(executable: "${projectDir}/wait.sh") {
            arg(value: 10)
            arg(value: "TRACER B")
        }
    }
}

在我的实验中,doItSerial需要20秒;正如我们预期的那样,doItParallel需要10秒钟。