我有兴趣在单个可执行 jar 文件中构建一个包含所有模块依赖项和外部 jar 的单个 jar,我将能够使用该文件运行java -jar myApp.jar
.
我有模块 A,它依赖于模块 B。
目前我正在使用 gradle,我的build.gradle
脚本看起来像这样:
apply plugin: 'fatjar'
description = "A_Project"
dependencies {
compile project(':B_Project')
compile "com.someExternalDependency::3.0"
}
当我通过 gradle 命令构建它时:clean build fatjar
按预期创建了一个胖罐子“A.jar”。
但是按照我上面写的那样运行它会导致:no main manifest attribute, in A.jar
我该如何修改我的build.gradle
文件并指定主类或清单?
我自己已经弄清楚了:
我使用过 uberjar Gradle 任务。
现在我的 build.gradle 文件如下所示:
apply plugin: 'java'
apply plugin: 'application'
mainClassName = 'com.organization.project.package.mainClassName'
version = '1.0'
task uberjar(type: Jar) {
from files(sourceSets.main.output.classesDir)
from {configurations.compile.collect {zipTree(it)}} {
exclude "META-INF/*.SF"
exclude "META-INF/*.DSA"
exclude "META-INF/*.RSA"
}
manifest {
attributes 'Main-Class': 'com.organization.project.package.mainClassName'
}
}
dependencies {
compile project(':B_Project')
compile "com.someExternalDependency::3.0"
}
现在我将它与命令一起使用:
干净构建 uberjar
它构建了一个漂亮的可运行 jar :)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)