我正在将我的构建从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是否有一些正确的方法可以并行执行某些内容而无需解决方法?
最佳答案 我相信并行执行任务(在同一个项目中)充其量只是一个孵化功能(或者尚未提供)(
see doc).
但是,在您的情况下,请注意Gradle包含Ant构建器.因为您没有尝试并行运行任务,所以它可能是一个直接的端口. (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秒.