Gradle中的并行执行



我正在把我的构建从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是否有一些适当的方法来并行执行一些没有变通的东西?

我相信并行执行任务(在同一个项目中)充其量是一个酝酿特性(或者还没有可用)(参见文档)。

但是,在你的例子中,请注意Gradle包含一个Ant Builder。因为您没有尝试并行运行任务,所以它可能是一个直接的端口。(这里是关于使用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秒,如我们所料。

相关内容

  • 没有找到相关文章

最新更新