gradle - 使用Kotlin DSL在Gradle中解压缩文件

标签 gradle build.gradle 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 docsOffical Gradle docs

某些部分是显而易见的,改为声明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)
    }
}

最佳答案

这似乎可行:
val fooBarRuntime通过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)
    }
}

关于gradle - 使用Kotlin DSL在Gradle中解压缩文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54200514/

相关文章:

maven - Grails 3.2.9自定义插件依赖项

groovy - 无法使用Gradle中的Groovy VFS库下载文件

在 mutil 项目设置中找不到 Gradle 依赖项?

javascript - Kotlin JS 项目的基本 Gradle 脚本 Kotlin 文件是什么样的?

eclipse - 在 Eclipse 上通过 gradle 设置 Kotlin

android - Android项目:gradle配置失败

intellij-idea - Gradle Idea 插件 - 目录作为项目库

linux - 为什么 Gradle 在 :linkDebugTestLinux in my Kotlin multiplatform project? 上失败

java - Gradle 指南,构建 Java Web 应用程序 - Gradle 构建抛出 java.lang.IllegalStateException

c++ - googletest 符号的 "multiple definition"仅在使用 gradle 在 Travis CI 上编译时