I have a Kotlin DSL build that is working. I want to move my dependency coordinates from my build.gradle.kts
to another file so that I can include the same file in multiple build.gradle.kts
files.
I currently have something like the following in my build.gradle.kts
:
ext {
set(
"libraries",
mapOf(
"guava" to mapOf("group" to "com.google.guava", "name" to "guava", "version" to "25.1-jre")
//...
)
)
}
dependencies {
@Suppress("UNCHECKED_CAST")
val libraries = ext.get("libraries") as Map<String, Map<String, String>>
implementation(libraries["guava"]!!)
//...
}
I tried moving the ext
block to a file named libraries.gradle.kts
, and inserting the following before my dependencies
block in build.gradle.kts
:
apply(from = "libraries.gradle.kts")
But that gives the following error:
* Where:
Script 'libraries.gradle.kts' line: 1
* What went wrong:
Script compilation errors:
Line 1: ext {
^ Unresolved reference: ext
Line 5: set(
^ Unresolved reference. None of the following candidates is applicable because of receiver type mismatch:
@InlineOnly public inline operator fun <K, V> MutableMap<String, Map<String, Map<String, String>>>.set(key: String, value: Map<String, Map<String, String>>): Unit defined in kotlin.collections
@InlineOnly public inline operator fun kotlin.text.StringBuilder /* = java.lang.StringBuilder */.set(index: Int, value: Char): Unit defined in kotlin.text
2 errors
How can I extract my dependency coordinate map into another file, and reference that file from build.gradle.kts
? I’d prefer the external file to be static, e.g., using the Kotlin DSL instead of the Groovy DSL.