首页 > 解决方案 > Gradle + Scala Plugin + Zinc 1.3.5 将 Protobuf 3.7 泄漏到编译器类路径

问题描述

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

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

标签: scalagradlezinc

解决方案


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

有了这个 MR,他们开始对 protobuf 依赖项进行着色(参见这个提交)。

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

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


推荐阅读