我有一个Gradle任务,它调用两个方法。这些方法是相互独立的,所以我想让它们并行启动。实现这一目标的最佳方法是什么?
示例:
task cucumber(dependsOn: 'testClasses') {
doLast {
// ...
// I want to call the next 2 methods in parallel
runSequentialTests(testEnvironment, tags)
runParallelTests(testEnvironment, tags)
}
}
def runSequentialTests(testEnvironment, tags) {
// execute cucumber tests via javaexec
}
def runParallelTests(testEnvironment, tags) {
// execute cucumber tests via exec sh script for each feature file (parallelism is done via GParsPool.withPool(5) {...}
}
答案 0 :(得分:1)
值得研究groovy并行系统库gpars
GParsPool.withPool {
GParsPool.executeAsyncAndWait({runSequentialTests(testEnvironment, tags)}, {runParallelTests(testEnvironment, tags)})
}
或者可以创建一个@ParallelizableTask
但我不确定你使用的是什么版本的gradle。并行是/是一个孵化功能。
并且需要使用--parallel运行构建,如果它们之间没有依赖关系,Gradle应该独立运行它们。
或者,您可以在gradle.properties
C:\Users\<user>\.gradle\gradle.properties
org.gradle.parallel=true
答案 1 :(得分:0)
我使用了GPars的异步调用:http://www.gpars.org/webapp/guide/#_asynchronous_invocations
我得到了它的工作。感谢
GParsPool.withPool {
GParsPool.executeAsyncAndWait({runSequentialTests(testEnvironment, tags)}, {runParallelTests(testEnvironment, tags)})
}