gradle - Fat Jar 使用 Gradle Kotlin DSL 扩展依赖关系

标签 gradle gradle-kotlin-dsl

我正在尝试使用基于 Kotlin 的 gradle 文件中的以下内容构建一个 fat jar。

val fatJar = task("fatJar", type = Jar::class) {
  baseName = "safescape-lib-${project.name}"
  // manifest Main-Class attribute is optional.
  // (Used only to provide default main class for executable jar)
  from(configurations.runtimeClasspath.map({ if (it.isDirectory) it else zipTree(it) }))
  with(tasks["jar"] as CopySpec)
}

tasks {
  "build" {
    dependsOn(fatJar)
  }
}

但是,fat jar 已扩展了所有依赖项。我希望将 jars 按原样包含在/lib 目录中,但我不知道如何实现这一点。

任何人都可以指导我如何实现这一目标吗?

谢谢

最佳答案

嗯,您在规范的 map 部分中使用了 zipTree,它的行为符合 the documentation :它解压缩不是目录的文件。

如果您想要 /lib 中的 jar,请将 from 替换为:

from(configurations.runtimeClasspath) {
    into("lib")
}

关于gradle - Fat Jar 使用 Gradle Kotlin DSL 扩展依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56518451/

相关文章:

build.gradle.kts 中的 androidTest Groovy 模拟

gradle - 将 Maven 插件迁移到 Gradle : What happens with plugin configurations?

android - kotlin DSL 从其他文件中检索 key

java - 从 Gradle 依赖项中排除包

gradle - 获取关系工件作为gradle的依赖项?

java - Gradle 4.0 不在命令行中显示已执行的任务

gradle - 使用其他子项目的 testCompile 输出 (Gradle Kotlin DSL)

ant - Ant 可以使用 Gradle 解析器吗?

java - Gradle 的 Java 项目的默认项目布局

gradle-kotlin-dsl - 使用 Kotlin Gradle DSL 从 ktor Kotlin 多平台项目创建胖 jar