Разархивируйте файл в Gradle с помощью Kotlin DSL

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

person roadSurfer    schedule 15.01.2019    source источник


Ответы (1)


Кажется, это работает: val fooBarRuntime с помощью конфигураций. Создание val runtimeDir с помощью 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)
    }
}
person roadSurfer    schedule 15.01.2019