第一次尝试将项目迁移到 Java 模块 (Jigsaw) 时,我遇到了 Confluent Serialization 库的问题:
module myproject reads package io.confluent.kafka.serializers from both kafka.schema.serializer and kafka.avro.serializer
两个库都定义了每个包都有不同的类(称为“拆分包”)。库
kafka.avro.serializer
依赖于kafka.schema.serializer
,所以排除不相关的传递依赖不是这种情况。而且两者似乎都没有迁移到模块,所以我假设它们是自动模块。
我预计每个使用 Avro 和 Java 模块的人都会遇到这个问题,我会得到一个快速的解决方案,但我不得不找到其他类似的案例来尝试为此挖掘解决方案。 这个答案 建议将有问题的库重新打包在一个 JAR 中并托管在一个内部存储库中,但这在我的公司是不可能的(出于安全考虑)。通过将类移动到不冲突的包来融合重构库可以解决这个问题,但很难猜测他们什么时候会这样做。
是否有任何其他解决方案,在项目级别(POM 或其他)理想可行的解决方案?