1
我想知道是否可以使用gradle動態創建源集。我的當前項目的目錄層次結構如下所示:是否可以動態創建源集?
- dbfit,JUnit的
- 模塊
- 富
- 吧
- 模塊
每本模塊文件夾(foo和bar)應該h將其自己的源集分配。原因是我想動態創建像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
}
}
}
的任務創建工程進展順利,這仍然是唯一缺少的東西是sourcesets的動態創建和分配。
感謝您的任何提示!
哇!似乎可以用Gradle做幾乎所有事情,我喜歡它。感謝你的回答。 – u6f6o
嗨,有沒有對此_sourceSets.create_方法的任何引用?我找不到它......謝謝! – Mikyjpeg
您可以在[Javadocs](https://docs.gradle.org/current/javadoc/org/gradle/api/NamedDomainObjectContainer.html#create(java.lang.String))中找到該方法。 NamedDomainObjectContainer是[SourceSetContainer]的父類(https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/SourceSetContainer.html)。 –