Hi Iceberg devs, I see that guava and slf4j-api are compileOnly dependencies. This implies that they are not required at runtime and will not be resolved when resolving Iceberg artifacts. So it might very well be the case that, say for example, for iceberg-spark, the guava dependency that could be used would be coming from Spark itself which could very well be different from what we intended.
I think these should be changed to compile as these are required dependencies, thoughts? Today, iceberg-runtime and iceberg-presto-runtime artifacts will not include these dependencies as they are declared as compileonly and we have configured shadow tasks to pick dependencies from "shadow" configuration. I think these slf4j and guava should be part of these iceberg runtime artifacts, no? Also, iceberg-[presto]-runtime reconfigure/recreates "shadow" configuration https://imperceptiblethoughts.com/shadow/configuration/#configuring-the-runtime-classpath. This configuration is reserved by Shadow task to add transitive dependencies which are not to be bundled in the fat jar. I think that we should not recreate "shadow" configuration and use standard runtime/compile configuration for shadow task to use. My last comment is what is the expected/recommended way to use Iceberg artifacts in a runtime say Spark. Should thin jars with transitive dependencies be used or an Iceberg runtime with shaded dependencies [most common dependencies which could conflict e.g guava, avro] be used? -R