我正在尝试使用 Gradle 创建一个 Fat/Uber jar。不幸的是,我不断遇到以下错误:
> Task :fatJar FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':fatJar'.
> Could not expand ZIP '/home/me/.gradle/caches/modules-2/files-2.1/org.apache.drill/drill-client/1.13.0/c90c87887c292a3712eccc7cebdc48b0b9d93ec9/drill-client-1.13.0.pom'.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/4.9/userguide/command_line_interface.html#sec:command_line_warnings
我曾尝试删除我的缓存目录,认为可能有些东西已损坏,但仍然没有快乐。
build.gradle 文件:
apply plugin: 'java'
apply plugin: 'maven'
group = 'com.me.ps'
version = me.version
sourceCompatibility = 1.8
targetCompatibility = 1.8
buildscript {
repositories {
jcenter()
}
}
repositories {
[...]
}
dependencies {
// Explicityly added to in hopes of being included in the fat jar
compile group: 'org.apache.hadoop', name: 'hadoop-common', version: '2.7.0-me-1803'
// dependencies listed in the pom.xml
compile group: 'com.me.ojai', name: 'me-ojai-driver', version: '6.0.1-me'
compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.6.5'
compile group: 'org.apache.kafka', name: 'connect-json', version: '1.0.1-me-1803-streams-6.0.1'
compile group: 'org.apache.spark', name: 'spark-core_2.11', version: '2.2.1'
compile group: 'org.apache.spark', name: 'spark-streaming_2.11', version: '2.2.1-me-1803'
compile group: 'org.apache.spark', name: 'spark-streaming-kafka-0-10_2.11', version: '2.2.1-me-1803'
compile group: 'org.apache.kafka', name: 'kafka-clients', version: '1.0.1-me-1803-streams-6.0.1'
// dependencies not in the pom.xml, but added to make the gradle build work
compile group: 'xerces', name: 'xercesImpl', version: '2.11.0'
compile group: 'org.json', name: 'json', version: '20171018'
compile group: 'com.google.guava', name: 'guava', version: '19.0'
}
task fatJar(type: Jar) {
baseName = project.name + '-all'
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
with jar
manifest {
attributes 'Main-Class': 'org.Lol'
}
}
我曾尝试使用 shadowJar 插件,但这导致胖 jar 中不包含依赖项。我有一个关于这个问题的单独问题。目前,我正在使用 Maven,它完美地构建了一个 fat jar 子。
最佳答案
也许你可以忽略 .pom
构建 JAR 时的文件,如下所示:
(configurations.compile.findAll { !it.path.endsWith(".pom") }).collect {
it.isDirectory() ? it : zipTree(it)
}
关于Gradle:Uber Jar 创建失败,错误为 "Could not expand ZIP",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51503369/