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
之前执行。谢谢。我试试这个谢谢。我试试这个