The last settings.gradle.kts
1 min readSep 4, 2019
I wanted to split my code and ended up with a lot of Gradle modules and submodules. What a pain to include them all. I know settings.gradle
could become Kotlin-friendly, so I wrote a loop that goes from my list of modules and search inside them for submodules:
include(":App")
include(":DependencyInjection")
include(":Entities")
listOf(
"Order",
"Product",
"User"
).forEach {
if (File("$rootDir/$it/build.gradle").exists()) {
include(":$it")
}
val useCase = "${it}UseCase"
if (File("$rootDir/$it/$useCase").exists()) {
include(":${it}:$useCase")
}
val repository = "${it}Repository"
if (File("$rootDir/$it/$repository").exists()) {
include(":${it}/$repository")
}
}
include(":Tracker")
And then I wanted something implicit:
File("$rootDir").listFiles()?.forEach {
File("${it.absolutePath}").listFiles()?.filter {
it.name.endsWith(".gradle") }?.forEach {
val module = it.parentFile.name
println(":$module")
include(":$module")
File("${it.parentFile.absolutePath}").listFiles()?.forEach {
File("${it.absolutePath}").listFiles()?.filter {
it.name.endsWith(".gradle") }?.forEach {
val submodule = it.parentFile.name
println(":$module/$submodule")
include(":$module/$submodule")
}
}
}
}
}
https://gist.github.com/shkschneider/2980941d16943084300f30af6d99c06d
This now looks for any (at maximum two-level deep) build.gradle
and includes them ;)