I\'m trying to organize my build files as I would in groovy, by having values in a separate file to reuse. But I cannot understand the syntax to do the same thing in the kotlin
A correct fix: Gradle collects and applies the buildscript { ... }
blocks from your script strictly before executing anything else from it. So, to make your properties from config.gradle.kts
available inside the buildscript
, you should move applyFrom("config.gradle.kts")
to your buildscript { ... }
block:
buildscript {
applyFrom("config.gradle.kts")
/* ... */
}
Another possible mistake is using an extra property as extra["minSdkVer"]
in a scope of another ExtensionAware
, like a task in this example:
val myTask = task("printMinSdkVer") {
doLast {
println("Extra property value: ${extra["minSdkVer"]}")
}
}
In this case, extra.get(...)
uses not the project.extra
but the extra
of the task.
To fix that, specify that you work with the project. Direct usage:
println(project.extra["minSdkVer"])
And for delegation.
val minSdkVer by project.extra