这有可能吗?我有类似的东西:

task taskB(dependsOn: taskA) {
    // Do stuff.
}

task taskA {
    // Do stuff.
}

task runClass(dependsOn: 'classes', type: JavaExec) {
    main = 'com.some.package.MainClass'
    classpath = some.classpath
}

我想在JavaExec任务中的taskB之前运行classes。我该怎么办?将其更改为dependsOn: ['taskB', 'classes']似乎无济于事-它仍然首先执行classes

编辑:

添加classes.dependsOn taskB似乎有效。这是最好的方法吗?

最佳答案

在Gradle中,foo.dependsOn(bar, baz)等效于foo.dependsOn(bar); foo.dependsOn(baz)。它并不意味着barbaz之间的任何顺序,就像在Ant中一样(具有其软依赖性功能)。

您能否阐明taskB的功能以及为什么认为它需要在classes之前运行?

编辑:

根据您在下面的评论,我将执行以下操作:

sourceSets.main.resources.srcDir "build/taskB" // output dir of taskB
processResources.dependsOn(taskB)

当然,可以用许多方法来完善它,但是它使基础知识正确。

10-07 20:13