The last settings.gradle.kts

Shk Schneider
1 min readSep 4, 2019

--

https://proandroiddev.com/make-your-build-gradle-great-again-c84cc172a654

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 ;)

--

--