我想知道是否可以使用gradle动态创建源集.我当前项目的目录层次结构如下所示:
dbfit-的JUnit
模
FOO
酒吧
每个模块文件夹(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 } } }
任务的创建工作顺利,唯一仍然缺少的是动态创建和分配源集.
谢谢你的任何提示!
是的,您可以动态创建源集.这是一个例子:
dbFitModules.each { module -> sourceSets.create("${module}Test") { ... } }