Desidero avere un contenitore di grassi ma senza le dipendenze fornite. Così ho utilizzare i seguenti due plugin:Pacchetti di plugin per ombreggiatura sfumata anche tutte le dipendenze "fornite" che non dovrebbero essere il caso
- https://github.com/johnrengelman/shadow
- https://github.com/nebula-plugins/gradle-extra-configurations-plugin
e avere un file build.gradle come questo:
apply plugin: 'nebula.provided-base'
apply plugin: 'com.github.johnrengelman.shadow'
archivesBaseName = 'range-cache-drivers'
group = 'com.engine'
version = '0.302-SNAPSHOT'
buildDir = 'target'
sourceCompatibility = 1.8
targetCompatibility = 1.8
dependencies {
provided project(':rangeCache')
// CSV, TSV, Fixe width
compile deps.univocityParsers
// MongoDB
compile deps.mongo
// Cassandra
compile deps.cassandradx
compile deps.cassandraSnappy
compile deps.cassandraLZ4
}
Ma quando corro gradle shadowJar
ho ancora tutte le classi rangeCache nel mio barattolo di grasso. Come posso escludere le dipendenze fornite dal mio barattolo di grasso?
EDIT 1: Anche questo sembra non funzionare, le dipendenze dei transitori vengono ancora copiate nel contenitore di grasso.
shadowJar {
dependencies {
exclude(project(':rangeCache'))
}
}
EDIT 2: Sulla base di risposta di Stanislav ho fatto quanto segue per ottenere le cose funzionano correttamente:
configurations {
shadow
compile.extendsFrom provided
provided.extendsFrom shadow
}
dependencies {
provided project(':rangeCache')
// CSV, TSV, Fixe width
shadow deps.univocityParsers
// MongoDB
shadow deps.mongo
// Cassandra
shadow deps.cassandradx
shadow deps.cassandraSnappy
shadow deps.cassandraLZ4
testCompile deps.junit
}
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
task fatJar(type: ShadowJar) {
configurations = [project.configurations.shadow]
from(project.sourceSets.main.output)
}
Questo file non funziona con i progetti. Comunque sono andato per la soluzione numero 3 nel post del blog collegato che sta funzionando abbastanza bene – KIC