我正在写一个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编译器插件是否会传播到下游项目?
答案 0 :(得分:5)
默认情况下,编译器插件不会传播,但实际上下游用户需要它们作为依赖项,并且您无法绕过此要求。
原因很简单,它们的代码将在不同的编译单元中编译,因此只要您具有依赖于将在最终代码库中找到的编译器插件的功能,您还需要粘贴一个注释在这个插件上显式添加依赖项。
希望这会有所帮助,例如真正受欢迎的Monocle lib here。例如,如果没有天堂,注释就不会扩展,所以这都是最终用户需要的问题。
<强>引用强>
如果您想使用@Lenses等宏注释,您还需要包含:
addCompilerPlugin("org.scalamacros" %% "paradise" % "2.1.0" cross CrossVersion.full)