У меня есть сценарий Groovy Gradle, который мне нужно преобразовать в Kotlin DSL. Ниже представлена сокращенная версия исходного файла build.gradle:
buildscript {
ext {
runtimeDir = "$buildDir/dependencies/fooBarRuntime"
}
}
...
configurations {
runtimeArchive
}
dependencies {
runtimeArchive "foo:bar:1.2.3@zip"
}
task unzip(type: Copy) {
configurations.runtimeArchive.asFileTree.each {
from(zipTree(it))
}
into runtimeDir
}
test.dependsOn unzip
test {
useJUnitPlatform()
environment "LD_LIBRARY_PATH", runtimeDir
}
Я не могу найти наглядный пример того, как это сделать через Kotlin DSL (я проверял документы Kotlin DSL и официальные документы Gradle.
Некоторые части очевидны, вместо этого объявите val runtimeDir by extra("$buildDir/dependencies/fooBarRuntime")
, но меня больше всего сбивает с толку зависимость от zip и извлечение в известное место для дальнейшего использования.
Может ли кто-нибудь указать мне на пример / документацию?
Обновление:
Теперь у меня есть что-то вроде этого, и, похоже, это работает:
val fooBarRuntime by configurations.creating
val runtimeDir by extra("$buildDir/dependencies/fooBarRuntime")
dependencies {
fooBarRuntime("foo", "bar", "1.2.3" , ext="zip")
}
tasks.withType<Test> {
dependsOn("unzip")
}
tasks.register("unzip") {
fooBarRuntime.asFileTree.forEach {
unzipTo(File(runtimeDir), it)
}
}