ソースセットを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
}
}
}
タスクの作成はスムーズに行われます。まだ欠けているのは、ソースセットの動的な作成と割り当てだけです。
ヒントをありがとう!