首页 > 解决方案 > 如何从终端将我的 Gradle 项目作为 JAR 运行

问题描述

我有一个具有以下结构的 GRADLE 应用程序:

我的项目结构

它也有一些依赖项(可以从上图中看到)我使用 ./gradlew clean build 构建了它

我正在尝试从java -jar build/libs/script-application-1.0-SNAPSHOT.jar正在抛出的终端运行以下命令no main manifest attribute, in script-application-1.0-SNAPSHOT.jar

我在 build.gradle 中有以下内容

plugins {
    id 'java'
}

jar {
    manifest {
        attributes(
                'Main-Class': 'Application'
        )
    }
}
group 'ScriptApplication'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.9.9.3'
    compile group: 'com.google.code.gson', name: 'gson', version: '2.8.5'

}

请帮忙。如何从终端运行 jar?下一步是从远程服务器运行 jar。

编辑: 遵循评论中的建议并更新了我的 build.gradle。但我仍然不明白 jar 将在哪里生成以及我将如何运行 jar?

plugins {
    id 'java'
}

group 'ScriptApplication'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.9.9.3'
    compile group: 'com.google.code.gson', name: 'gson', version: '2.8.5'

}

task fatJar(type: Jar) {
    manifest {
        attributes 'Main-Class': 'Application'
    }
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
    with jar
}

标签: javagradleintellij-ideajar

解决方案


不得不补充:

task fatJar(type: Jar) {
    manifest {
        attributes 'Main-Class': 'Application'
    }
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
    with jar
}

然后运行gradle cleangradle fatJar

然后可以通过以下方式运行 jar: java -jar build/libs/<application>.jar


推荐阅读