5

我正在写一个 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 编译器插件是否会传播到下游项目?

4

1 回答 1

5

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

原因很简单,他们的代码将在不同的编译单元中编译,所以只要你有依赖于最终代码库中的编译器插件的功能,你还需要在这个插件上做个说明显式添加依赖项。

希望这会有所帮助,并以这里非常流行的 Monocle lib 为例。例如,注释不会在没有天堂的情况下扩展,所以这完全是最终用户需要什么的问题。

引用

如果要使用@Lenses 等宏注解,还需要包括:

addCompilerPlugin("org.scalamacros" %% "paradise" % "2.1.0" cross CrossVersion.full)
于 2017-05-03T12:06:13.183 回答