У меня есть скрипт 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)
}
}