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

Reply via email to