如何使用Gradle创建具有实现依赖性的可执行胖jar

问题描述 投票:20回答:2

我在Gradle 4.6中有一个简单的项目,并希望制作一个可执行的jar。我已经尝试过shadowgradle-fatjar-plugingradle-one-jarspring-boot-gradle-plugin插件,但它们都没有添加我声明为implementation的依赖项(我没有任何compile)。它适用于compile,例如对于gradle-one-jar插件,但我想有implementation依赖项。

非常感谢你!

java gradle executable-jar gradle-plugin fatjar
2个回答
31
投票

您可以使用以下代码。

jar {
    manifest {
        attributes(
                'Main-Class': 'com.package.YourClass'
        )
    }
    from {
        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
    }
 }

请务必将com.package.YourClass替换为包含static void main( String args[] )的完全限定类名。

这将打包运行时依赖项。如果您需要更多信息,请查看docs


2
投票

使用Gradle Kotlin DSL以类似的方式可以实现相同的任务:

val jar by tasks.getting(Jar::class) {
    manifest {
        attributes["Main-Class"] = "com.package.YourClass"
    }

    from(configurations.runtime.map { if (it.isDirectory) it else zipTree(it) })
}
© www.soinside.com 2019 - 2024. All rights reserved.