Gradle + Scala 插件 + Zinc 1.3.5 将 Protobuf 3.7 泄漏到编译器类路径

Gradle + Scala Plugin + Zinc 1.3.5 leaks Protobuf 3.7 to the compiler classpath

在将 Scala 项目升级到 Gradle 6 & Zinc 1.3.5 后调试生成的 Protobuf 代码的编译错误时,我发现编译器类路径包含两个版本的 protobuf jar - 我需要的那个( 3.9.x) 和 3.7。后者是 Zinc 的依赖项。

运行 在 Gradle 中构建 Zinc Scala 而不会将其自身的依赖项泄漏到类路径的正确方法是什么?

这已通过 sbt/zinc PR 799 解决,该 PR 799 已合并并包含在 Zinc 的 1.4.0 版本中。

有了这个 MR,他们开始隐藏 protobuf 依赖项(参见 this commit)。

不幸的是,目前无法将此版本的 Zinc 与 Gradle 一起使用,因为 Gradle 问题 #15491 从未得到解决(请注意问题标题提到 Zinc 1.4.3 但适用适用于 1.3.x 系列之后的所有 Zinc 版本)。

看起来没有任何解决 #15491 的计划,但看起来这个问题将作为 PR 18001 的 side-effect 得到解决,该 PR 18001 正在积极开发中,目的是将 Scala 3 支持添加到 Gradle(并且还涉及清理各种长期存在的问题类路径相关问题)。