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

Posted

技术标签:

【中文标题】Gradle + Scala Plugin + Zinc 1.3.5 将 Protobuf 3.7 泄漏到编译器类路径【英文标题】:Gradle + Scala Plugin + Zinc 1.3.5 leaks Protobuf 3.7 to the compiler classpath 【发布时间】:2020-11-10 14:32:13 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

通过这个 MR,他们开始对 protobuf 依赖项进行着色(参见 this commit)。

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

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

【讨论】:

以上是关于Gradle + Scala Plugin + Zinc 1.3.5 将 Protobuf 3.7 泄漏到编译器类路径的主要内容,如果未能解决你的问题,请参考以下文章

Gradle学习

如何升级gradle plugin

在 Scala 和 Gradle 中使用 AndroidAnnotations

使用 maven-scala-plugin 构建 jar

gradle wrapper, gradle ,gradle plugin 之间的关系

Ubuntu环境下安装Scala以及安装IntelliJ Scala插件(Plugin)