源集编译任务是否自动依赖于普通的compileJava任务?摇篮

时间:2017-03-10 20:18:19

标签: gradle

Gradle java插件中的compileJava任务是否依赖于我创建的任何源集的compileSourceSetJava任务?或者我是否需要手动使用dependsOn来确保在运行compileJava时编译所有源集?va`?

1 个答案:

答案 0 :(得分:1)

我相信它不会自动依赖任何东西。如果您只是创建一个空的源集,那就是 - 一组源。但取决于您的用例,可能存在隐式依赖。请考虑以下gradle脚本:

apply plugin: "java"

sourceSets {
    integrationTest {
        java {
            compileClasspath += main.output
            runtimeClasspath += main.output
        }
    }
}

configurations {
    integrationTestCompile.extendsFrom testCompile
    integrationTestRuntime.extendsFrom testRuntime
}

task integrationTest(type: Test) {
    testClassesDir = project.sourceSets.integrationTest.output.classesDir
    classpath = project.sourceSets.integrationTest.runtimeClasspath
}

由于integrationTest源集引用了main java源集,因此gradle会自动在compileJava(和processResources)上创建依赖关系。

所以答案是“它取决于”(双关语并非意图)。根据您如何定义源集和配置,可能存在隐式依赖关系。但是,如果您没有定义两个源集之间的任何关系,则没有理由为什么它们会自动创建任何依赖项。

顺便说一下,如果你想要探索更多内容,那就有一个很好的gradle plugin for generating task graphs