java - 如何从终端将我的 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
}
解决方案
不得不补充:
task fatJar(type: Jar) {
manifest {
attributes 'Main-Class': 'Application'
}
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
with jar
}
然后运行gradle clean
和gradle fatJar
。
然后可以通过以下方式运行 jar:
java -jar build/libs/<application>.jar
推荐阅读
- wordpress - 页面在 Wordpress 页面选项中未按预期显示
- node.js - 附加到循环中的文件失败,Node.js 中的文件 ENOENT 错误
- python - python中使用plink.exe发送和分析多个命令
- vba - Outlook VBA,从主题中剪切电子邮件地址并将其放置为收件人,然后转发邮件
- javascript - 具有不同 json 变量的 for 循环显示所有项目,而不是每个项目
- angularjs - Umbraco 自定义部分验证必填字段
- javascript - 更新我的元素 ID,以便在对它们进行排序时按时间顺序排列
- batch-file - 批处理文件中的多个调用发出堆栈限制超出错误
- sql-server - 如何在存储过程中获取源系统时间戳而不是 SQL Server 时间戳?
- mysql - 如何按结果从 mysql Group 中消除重复计数?