Tôi muốn có một bình chất béo nhưng không có phụ thuộc được cung cấp. Vì vậy, tôi sử dụng hai plugin sau đây:Gói plugin bóng tối cũng tất cả các phụ thuộc "được cung cấp" không phải là trường hợp
- https://github.com/johnrengelman/shadow
- https://github.com/nebula-plugins/gradle-extra-configurations-plugin
và có một tập tin build.gradle như thế này:
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
}
Nhưng khi tôi chạy gradle shadowJar
tôi vẫn còn có tất cả các lớp rangeCache trong lọ chất béo của tôi. Làm thế nào tôi có thể loại trừ các phụ thuộc được cung cấp từ bình chất béo của tôi?
EDIT 1: Điều này có vẻ cũng không hoạt động, các phụ thuộc tạm thời vẫn được sao chép vào bình chất béo.
shadowJar {
dependencies {
exclude(project(':rangeCache'))
}
}
EDIT 2: Dựa trên câu trả lời của Stanislav tôi đã làm như sau để có được những thứ hoạt động bình thường:
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)
}
Dows này không hoạt động với các dự án. Tuy nhiên tôi đã đi cho giải pháp số 3 trong bài đăng blog được liên kết đang hoạt động khá tốt – KIC