使用Gradle创建Groovy可执行JAR

eme*_*esx 39 groovy gradle

这是我的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'
}
Run Code Online (Sandbox Code Playgroud)

这编译得很好

问题是我无法运行创建的JAR,我得到一个例外 java.lang.NoClassDefFoundError: groovy/lang/GroovyObject

所以我猜groovy插件不包含JAR中的所有必要类.

如何创建一个独立的JAR,我可以简单地运行;-)

Ben*_*hko 48

您正在寻找的是应用程序插件,它允许您构建一个独立的JVM应用程序,包括所有依赖项和运行脚本.

apply plugin:'application'
mainClassName = 'test.tree.App'
Run Code Online (Sandbox Code Playgroud)

编辑:

这应该创造你想要的uberjar:

task uberjar(type: Jar) {
    from files(sourceSets.main.output.classesDir)
    from configurations.runtime.asFileTree.files.collect { zipTree(it) }

    manifest {
        attributes 'Main-Class': 'test.tree.App'
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 根据@Benjamin提供的代码创建了一个示例项目:https://github.com/bond-/gradle-groovy-jar-example (3认同)