我想知道是否可以在gradle中定义一个源集(例如integrationTests),它可以应用于所有使用'java'插件的子项目?
像
这样的东西sourceSets {
integTest {
java.srcDir file('src/integration-test/java')
resources.srcDir file('src/integration-test/resources')
compileClasspath = sourceSets.main.output + configurations.integTest
runtimeClasspath = output + compileClasspath
}
}
如上所述here适用于所有java子项目?
感谢您提供有用的提示!
答案 0 :(得分:4)
您可以通过应用插件过滤构建的子项目。在您的示例中,这将如下所示:
def javaProjects() {
subprojects.findAll { project ->
project.plugins.hasPlugin('java')
}
}
configure(javaProjects()) {
sourceSets {
integTest {
java.srcDir file('src/integration-test/java')
resources.srcDir file('src/integration-test/resources')
compileClasspath = sourceSets.main.output + configurations.integTest
runtimeClasspath = output + compileClasspath
}
}
}
答案 1 :(得分:0)
因为在子项目的构建脚本之前评估了根项目的构建脚本,所以client_secret
不起作用(至少在我使用的Gradle 4.8.1中)。
相反,您可以在根项目中注册一个回调,每次在子项目中应用插件时都会调用该回调:
subprojects.findAll{project -> project.plugins.hasPlugin('java')}