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插件来生成任务图。