gpt4 book ai didi

scala - SBT插件: How to add compiler plugin as a dependency that is not propagated downstream?

转载 作者:行者123 更新时间:2023-12-03 03:25:40 25 4
gpt4 key购买 nike

我正在编写一个 SBT 插件。我想使用 Circe JSON 库,但它需要 Scala 2.10 上的 Macro Paradise 编译器插件。

通常,您将编译器插件添加到 build.sbt 中,将 SBT 插件添加到 project/plugins.sbt 中。

现在,当您构建 SBT 插件时,其他插件将成为依赖项,因此您将它们放入 build.sbt 中,并将它们传播到您使用 SBT 插件的项目。

当我将以下代码片段放入 SBT 插件的 build.sbt 中时:

addCompilerPlugin("org.scalamacros" % "paradise" % "2.1.0" cross CrossVersion.full)

Paradise 编译器插件是否传播到下游项目?

最佳答案

默认情况下不会传播编译器插件,但下游用户实际上需要它们作为依赖项,并且您无法绕过此要求。

原因很简单,他们的代码将在不同的编译单元中编译,因此只要您具有依赖于最终代码库中找到的编译器插件的功能,您还需要粘贴注释在此插件上显式添加依赖项。

希望这有帮助,并以非常流行的 Monocle 库 here 为例。 。例如,如果没有天堂,注释就不会扩展,因此这完全取决于最终用户需要什么。

报价

如果您想使用宏注释,例如@Lenses,您还需要包括:

addCompilerPlugin("org.scalamacros" %% "paradise" % "2.1.0" cross CrossVersion.full)

关于scala - SBT插件: How to add compiler plugin as a dependency that is not propagated downstream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43757369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com