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