这是我的gradle构建脚本 .
apply plugin: 'groovy'
project.group = "test.tree"
archivesBaseName = "tree"
project.version = "1.0"
manifest.mainAttributes("Main-Class" : "test.tree.App")
sourceCompatibility=1.6
targetCompatibility=1.6
repositories {
mavenCentral()
}
dependencies {
groovy group: 'org.codehaus.groovy', name: 'groovy', version: '1.8.6'
testCompile group: 'junit', name: 'junit', version: '4.8.2'
}
这编译得很好
问题是我无法运行创建的JAR,我得到一个异常 java.lang.NoClassDefFoundError: groovy/lang/GroovyObject
所以我猜groovy插件不包含JAR中的所有必要类 .
如何创建一个独立的JAR,我可以简单地运行;-)
3 回答
您正在寻找的是application plugin,它允许您构建一个独立的JVM应用程序,包括所有依赖项和运行脚本 .
EDIT:
这应该创造你想要的uberjar:
the following code is also ok ,使用spring boot插件
我会投票给shadow gradle plugin . 它能够建造超级 jar ,并且功能多样,能够像 class 搬迁一样防止dependency hell .
我不打算比较这两个插件,但我会说,由于增加了功能,我已经倾向于使用过去使用过应用程序的阴影 .
当我厌倦了基于@Grab的groovy脚本的启动时间时,我倾向于使用shadow插件编写一个gradle构建文件,即使对于单个文件groovy脚本也是如此 . 一个示例gradle构建文件,能够在当前目录中构建一个常规脚本文件的超级jar . 主类名称需要与脚本文件名对应:
超级jar将在
build/libs
目录中生成 .