我看到了SBT Plugin: How to add compiler plugin as a dependency that is not propagated downstream?,但这不能回答我的问题。
这里是结构:
other plugins
|-----> added to my own plugin
|-----> Consumer project
由于consumer project
,addCompilerPlugin
需要在自己的enablePlugins
中添加build.sbt
和other plugins
。
我在other plugins
的{{1}}中添加了build.sbt
。
我在插件中将my own plugin
和addCompilerPlugin
放在哪里,这样enablePlugins
不必自己做?
谢谢
答案 0 :(得分:1)
addCompilerPlugin
只是用于修改特定设置键的快捷方式,而enablePlugins
是用于修改项目配置本身的方法。因此,这些东西在不同的级别上,因此针对您的目的进行不同的处理。
为确保启用插件也将启用其他插件,您需要修改插件中的requires
声明:
object YourPlugin extends AutoPlugin {
override def requires: Plugins = FirstDependencyPlugin & SecondDependencyPlugin
}
现在,当您将插件添加到项目中时:
lazy val someProject = project.enablePlugins(YourPlugin)
然后还将启用FirstDependencyPlugin
和SecondDependencyPlugin
插件。
要启用编译器插件,只需确保您的插件提供addCompilerPlugin
返回的设置定义:
object YourPlugin extends AutoPlugin {
override def projectSettings: Seq[Def.Setting[_]] = super.projectSettings ++ Vector(
addCompilerPlugin("com.example" % "some-plugin" % "1.2.3")
)
}
现在,将您的插件添加到项目中后,它提供的Def.Setting[_]
将自动应用于该项目,并且它将使用指定的编译器插件来构建您的代码。