我在Gradle 4.6中有一个简单的项目,并希望制作一个可执行的jar。我已经尝试过shadow
,gradle-fatjar-plugin
,gradle-one-jar
,spring-boot-gradle-plugin
插件,但它们都没有添加我声明为implementation
的依赖项(我没有任何compile
)。它适用于compile
,例如对于gradle-one-jar
插件,但我想有implementation
依赖项。
非常感谢你!
您可以使用以下代码。
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。
使用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) })
}