Gradle 当并行的、正常的任务混合在一起时,并行任务的执行打破了顺序 apply插件:“java” 任务任务a
在Gradle 当并行的、正常的任务混合在一起时,并行任务的执行打破了顺序 apply插件:“java” 任务任务a,gradle,groovy,parallel-processing,Gradle,Groovy,Parallel Processing,在build.gradle文件的内容之后,添加包装器任务: apply plugin: 'java' task taskA <<{ println 'task A' } task taskB (type:P){ namee='B' } task taskC (type:P){ namee='C' } @ParallelizableTask class P extends DefaultTask { String namee @Task
build.gradle
文件的内容之后,添加包装器
任务:
apply plugin: 'java'
task taskA <<{
println 'task A'
}
task taskB (type:P){
namee='B'
}
task taskC (type:P){
namee='C'
}
@ParallelizableTask
class P extends DefaultTask {
String namee
@TaskAction
def broccoliBuild() {
println "Task "+namee
}
}
task taskBC (dependsOn:['taskB','taskC'])<<{
println 'BC'
}
taskBC.mustRunAfter taskA
task taskD <<{
println'task D'
}
taskD.mustRunAfter taskBC
task taskE (type:Qtask){
nname='E'
}
task taskF (type:Qtask){
nname='F'
}
@ParallelizableTask
class Qtask extends DefaultTask {
String nname
@TaskAction
def broccoliBuild() {
println "Task "+nname
}
}
task taskEF (dependsOn:['taskE','taskF'])<<{
println 'task EF'
}
taskEF.mustRunAfter taskD
task main(dependsOn: ['taskA','taskBC','taskD','taskEF'])<<{
println 'Build Completed'
}
我运行了以下命令:gradlew wrapper
,然后检查了版本,这表明我正确运行了预期的gradle2.12版本
task wrapper(type: Wrapper) {
gradleVersion = '2.12'
}
然后,运行您提供的命令,结果如下:
E:\Data\Test>gradlew --version
------------------------------------------------------------
Gradle 2.12
------------------------------------------------------------
Build time: 2016-03-14 08:32:03 UTC
Build number: none
Revision: b29fbb64ad6b068cb3f05f7e40dc670472129bc0
Groovy: 2.4.4
Ant: Apache Ant(TM) version 1.9.3 compiled on December 23 2013
JVM: 1.8.0_111 (Oracle Corporation 25.111-b14)
OS: Windows 10 10.0 amd64
因此,使用Gradle 2.12
时,输出会按预期运行,taskEF
会在taskBC
之后正确运行
您可能没有运行您想要的正确版本的Gradle,或者实际运行的build.Gradle
版本与此处提供的版本不同
作为旁注:我建议始终使用包装器任务运行Gradle,如我所示,这使得更新或选择特定的Gradle版本非常简单。在
build.Gradle
文件的内容之后,添加包装器任务:
apply plugin: 'java'
task taskA <<{
println 'task A'
}
task taskB (type:P){
namee='B'
}
task taskC (type:P){
namee='C'
}
@ParallelizableTask
class P extends DefaultTask {
String namee
@TaskAction
def broccoliBuild() {
println "Task "+namee
}
}
task taskBC (dependsOn:['taskB','taskC'])<<{
println 'BC'
}
taskBC.mustRunAfter taskA
task taskD <<{
println'task D'
}
taskD.mustRunAfter taskBC
task taskE (type:Qtask){
nname='E'
}
task taskF (type:Qtask){
nname='F'
}
@ParallelizableTask
class Qtask extends DefaultTask {
String nname
@TaskAction
def broccoliBuild() {
println "Task "+nname
}
}
task taskEF (dependsOn:['taskE','taskF'])<<{
println 'task EF'
}
taskEF.mustRunAfter taskD
task main(dependsOn: ['taskA','taskBC','taskD','taskEF'])<<{
println 'Build Completed'
}
我运行了以下命令:gradlew wrapper
,然后检查了版本,这表明我正确运行了预期的gradle2.12版本
task wrapper(type: Wrapper) {
gradleVersion = '2.12'
}
然后,运行您提供的命令,结果如下:
E:\Data\Test>gradlew --version
------------------------------------------------------------
Gradle 2.12
------------------------------------------------------------
Build time: 2016-03-14 08:32:03 UTC
Build number: none
Revision: b29fbb64ad6b068cb3f05f7e40dc670472129bc0
Groovy: 2.4.4
Ant: Apache Ant(TM) version 1.9.3 compiled on December 23 2013
JVM: 1.8.0_111 (Oracle Corporation 25.111-b14)
OS: Windows 10 10.0 amd64
因此,使用Gradle 2.12
时,输出会按预期运行,taskEF
会在taskBC
之后正确运行
您可能没有运行您想要的正确版本的Gradle,或者实际运行的build.Gradle
版本与此处提供的版本不同
作为旁注:我建议始终使用包装器任务运行Gradle,如我所示,这使得更新或选择特定的Gradle版本非常简单。您能提供Gradle输出吗?我在本地运行了很多次脚本,taskD
总是在taskEF
之前执行。您能提供您的Gradle输出吗?我在本地运行了很多次脚本,taskD
总是在taskEF
之前执行。谢谢。我试试这个谢谢。我试试这个