How to create the fat jar with gradle kotlin script

前端 未结 3 1838
南方客
南方客 2020-12-24 01:31

As titled, I\'d like to know how to modify the gradle.build.kts in order to have a task to create a unique jar with all the dependencies (kotlin li

3条回答
  •  [愿得一人]
    2020-12-24 01:51

    Here is how to do it as of Gradle 6.5.1, Kotlin/Kotlin-Multiplatform 1.3.72, utilizing a build.gradle.kts file and without using an extra plugin which does seem unnecessary and problematic with multiplatform;

    Note: in reality, few plugins work well with the multiplatform plugin from what I can tell, which is why I suspect its design philosophy is so verbose itself. It's actually fairly elegant IMHO, but not flexible or documented enough so it takes a ton of trial and error to setup even WITHOUT additional plugins.

    Hope this helps others.

    kotlin {
        jvm {
            compilations {
                val main = getByName("main")
                tasks {
                    register("fatJar") {
                        group = "application"
                        manifest {
                            attributes["Implementation-Title"] = "Gradle Jar File Example"
                            attributes["Implementation-Version"] = archiveVersion
                            attributes["Main-Class"] = "[[mainClassPath]]"
                        }
                        archiveBaseName.set("${project.name}-fat")
                        from(main.output.classesDirs, main.compileDependencyFiles)
                        with(jar.get() as CopySpec)
                    }
                }
            }
        }
    }
    

提交回复
热议问题