源集编译任务会自动取决于普通的CompileJava任务吗?gradle



gradle Java插件的compileJava任务是否取决于我创建的任何源集的CompileSourcesEtjava任务?或者我需要手动使用依赖子来确保当我运行CompileJava?va`?

时都汇总了所有源集

我相信它不会自动取决于任何东西。如果您只是创建一个空源集,那就是 - 一组来源。但是取决于您的用例,可能存在隐式依赖性。考虑以下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插件来生成任务图。

最新更新