我正在编写一个 SBT 插件。我想使用 Circe JSON 库,但它需要 Scala 2.10 上的 Macro Paradise 编译器插件。
通常你添加编译器插件build.sbt
和 SBT 插件project/plugins.sbt
.
现在,当您构建 SBT 插件时,其他插件将成为依赖项,因此您将它们放入build.sbt
它们会传播到您使用 SBT 插件的项目。
当我将以下代码片段放入build.sbt
我的 SBT 插件:
addCompilerPlugin("org.scalamacros" % "paradise" % "2.1.0" cross CrossVersion.full)
Paradise 编译器插件是否传播到下游项目?
默认情况下不会传播编译器插件,但下游用户实际上需要它们作为依赖项,并且您无法绕过此要求。
原因很简单,他们的代码将在不同的编译单元中编译,因此只要您具有依赖于最终代码库中找到的编译器插件的功能,您还需要在该插件上添加注释显式添加依赖项。
希望这会有所帮助,并以非常流行的 Monocle 库为例here http://julien-truffaut.github.io/Monocle/。例如,如果没有天堂,注释就不会扩展,所以这完全取决于最终用户需要什么。
Quote
如果您想使用宏注释(例如@Lenses),您还需要包括:
addCompilerPlugin("org.scalamacros" %% "paradise" % "2.1.0" cross CrossVersion.full)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)