Gradle: shadowJar оставляет зависимости вне
При попытке создать толстую банку shadowJar оставляет множество зависимостей. Я создал файл build.gradle из рабочего файла pom.xml. Maven строит толстую банку без проблем. Читая информацию Gradle о создании толстого фляги, плагин shadowJar кажется рекомендуемым методом. Однако мой фляга Gradle давала следующую ошибку во время выполнения:
Jul 19, 2018 2:35:10 PM restclients.RestStatus2Streams writeToStream
SEVERE: Error occurred while instantiating com.me.streams.impl.producer.MarlinProducerV10.
==> java.lang.NoClassDefFoundError: org/apache/hadoop/fs/PathId.
Очевидно, в моей дальней банке чего-то не хватало. Конечно же, org/apache/hadoop/fs/PathId и целые каталоги зависимостей отсутствовали. Хотя файл pom.xml явно не включает в себя зависимость "org.apache.hadoop: hadoop-common", я явно добавил этот артефакт в качестве зависимости в мой файл build.gradle и все равно не радуюсь.
Чтобы ответить на несколько вопросов:
- Является ли широко распространенный артефакт в хранилище? Да.
- Находится ли именованная версия артефакта в хранилище? да
- Является ли класс PathId артефактом, который находится в хранилище? "Jar xf" артефакта указывает "да".
Так как баночка жира Maven работает отлично, а при расстановке банок жира Maven отображается класс PathId (и другие, отсутствующие в банке жира Gradle), значит, что-то не так с моим файлом build.gradle и / или плагином shadowJar и / или Gradle.
файлbuild.gradle:
apply plugin: 'java'
apply plugin: 'maven'
apply plugin: 'com.github.johnrengelman.shadow'
group = 'com.me.ps'
version = me.version
sourceCompatibility = 1.8
targetCompatibility = 1.8
defaultTasks 'shadowJar'
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.3'
}
}
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'
}
shadowJar {
zip64 true
baseName 'me-edge'
}
Что мой файл build.gradle делает неправильно?
- Gradle 4.9
- ОС: Linux 3.10.0-514.el7.x86_64 amd64
- JVM: 1.8.0_151 (Oracle Corporation 25.151-b12)