我想知道是否可以使用 gradle 动态创建源集。我当前项目的目录层次结构如下所示:
- dbfit-junit
- 模块
- 富
- 酒吧
- 模块
每个模块文件夹(foo 和 bar)都应该分配有自己的源集。原因是我想动态创建像 dbFitTestFoo 和 dbFitTestBar 这样的任务。我目前的方法如下所示:
ext.dbFitModulesDir = "dbfit-junit/module"
ext.dbFitTestSpecs = ["java", "groovy", "scala", "resources"]
ext.dbFitModules = []
file(dbFitModulesDir).eachDir{ module ->
dbFitModules << module.name
}
/** this needs to be done dynamically for each "module" **/
sourceSets {
integrationTest { sourceSet ->
dbFitModules.each{ module ->
dbFitTestSpecs.each { spec ->
if (!sourceSet.hasProperty(spec)) {
return
}
sourceSet."$spec".srcDir file("$dbFitModulesDir/$module/$spec")
}
}
}
}
dbFitModules.each{ module ->
task "dbFitTest${module.capitalize()}"(type: Test) {
group = "Verification"
description = "Run dbFit tests for $module"
doLast {
testClassesDir = sourceSets.integrationTest.output.classesDir
classpath = sourceSets.integrationTest.runtimeClasspath
}
}
}
任务的创建工作顺利,唯一仍然缺少的是源集的动态创建和分配。
感谢您的任何提示!