Hey all,
Does anyone have experience with sticky dependencies in gradle? I'm
experimenting with the new Managed Iceberg connector and trying to write to
GCS with a Hive catalog.
I naturally need to pull some hive dependencies, but one particular module
is very stubborn with its dependencies: *org.apache.hive:hive-exec:3.1.3.*
I need to override its dependency on *com.google.protobuf:protobuf-java*
(version 2.5.0) to use a more up-to-date version, but nothing I do seems to
work
I tried the following in my gradle file, but running the code always
defaults to classes in *protobuf-java:2.5.0*:
configurations.all {
resolutionStrategy.force 'com.google.protobuf:protobuf-java:3.25.3'
}
dependencies {
testImplementation 'com.google.protobuf:protobuf-java:3.25.3'
testImplementation("org.apache.hive:hive-exec:3.1.3") {
exclude group: "com.google.protobuf", module: "protobuf-java"
}
testImplementation "org.apache.iceberg:iceberg-hive-metastore:1.4.2"
testImplementation("org.apache.hive.hcatalog:hive-hcatalog-core:3.1.3") {
exclude group: "org.apache.hive", module: "hive-exec"
exclude group: "com.google.protobuf", module: "protobuf-java"
}
constraints {
testImplementation('com.google.protobuf:protobuf-java') {
version {
strictly '3.25.3'
}
}
}
}
I also tried adding the following, which stripped *protobuf-java* from
everything except *hive-exec:*
configurations.all {
exclude group: 'com.google.protobuf', module: 'protobuf-java'
}
I also had similar pain points when trying to override
org.apache.parquet:parquet-column. The hive module seems very intent on
keeping its dependencies.
Can anyone share their experiences with stubborn dependencies such as
these? Would appreciate any tips!
Best,
Ahmed