gradle - 如何使用 Kotlin DSL 和插件在 Gradle 中创建一个胖 Jar

标签 gradle gradle-plugin gradle-kotlin-dsl fatjar

我做了很多关于如何用 Gradle 创建 fat jar 的研究。
但是,我不知道如何使用 Kotlin DSL 和插件。
我有这个代码:

plugins {
    application
    id("org.openjfx.javafxplugin") version "0.0.9"
    id("com.github.johnrengelman.shadow") version "6.1.0"
}

repositories {
    mavenCentral()
}

dependencies {
    implementation("javax.vecmath", "vecmath", "1.5.2")
    implementation("org.apache.commons", "commons-csv", "1.8")
}

application {
    mainModule.set("de.weisbrja")
    mainClass.set("de.weisbrja.App")
}

javafx {
    modules("javafx.controls")
}

modularity.disableEffectiveArgumentsAdjustment()
但我不知道如何为 fat jar list 指定主类。
我遵循的教程是这样做的:
jar {
    manifest {
        attributes "Main-Class": "com.baeldung.fatjar.Application"
    }

    from {
        configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
    }
}
但那是 Groovy DSL 而不是 Kotlin DSL,我对 Kotlin DSL 还不是很熟悉,所以我不知道如何将其转换为 Kotlin DSL。
非常感谢帮助。

最佳答案

在 kotlin dsl (build.gradle.kts) 中尝试这个 Vanilla 解决方案

dependencies {
     implementation(group="org.mycomp",name="foo",version="1.0")
}

tasks {
   jar {
       //package org.mycomp.foo inside the .jar file 
       from(configurations.runtimeClasspath.get().map { if (it.isDirectory) it else zipTree(it) })
   }
}
或者你可以使用 shadowJar 插件
plugins {
    id("com.github.johnrengelman.shadow") version "7.0.0"
}
然后运行 ​​./gradlew :shadowJar

关于gradle - 如何使用 Kotlin DSL 和插件在 Gradle 中创建一个胖 Jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66796014/

相关文章:

android - 无法添加名称为 'kotlin' 的扩展,因为已经有一个扩展使用该名称注册

java - 如何在 gradle 测试中启用有用的 NullPointerExceptions

gradle - 如何读取 buildSrc 模块资源文件夹中的属性文件?

android - 如何避免两种口味的应用打开同一应用?

android - 降低 minSdkVersion——需要警告信息

android studio卡在刷新gradle项目

java - Gradle - 使用以闭包作为参数的插件方法的语法错误

android - 配置了 pmd、checkstyle 和 findbugs 的自定义 gradle 插件

android - 使用新版本的 gradle android 插件检测未使用的资源误报

gradle - 获取 SourceSet 完整路径字符串或路径目录