Ell*_*lic 13 jar build uberjar gradle intellij-13
我有兴趣在一个可执行的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"
}
Run Code Online (Sandbox Code Playgroud)
当我通过gradle命令构建它时:clean build fatjar按预期创建一个胖罐"A.jar".但是,如上所述,运行它会导致:
no main manifest attribute, in A.jar
如何修改我的build.gradle文件并指定主类或清单?
Ell*_*lic 16
我自己弄清楚了:我使用过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"
}
Run Code Online (Sandbox Code Playgroud)
现在我用它命令:
干净的建造uberjar
它构建了一个漂亮的runnable jar :)
小智 5
为了让它使用fatjar工作,我在fatJar任务中添加了一个manifest部分:
task fatJar(type: Jar) {
baseName = project.name + '-all'
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
with jar
manifest {
attributes 'Implementation-Title': 'Gradle Quickstart', 'Implementation-Version': version
attributes 'Main-Class': 'com.organization.project.package.mainClassName'
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17389 次 |
| 最近记录: |