SBT 插件:传播编译器插件并在下游启用插件
SBT Plugin: Propagate Compiler Plugin and Enable Plugin downstream
我看到了 但这并没有回答我的问题。
结构如下:
other plugins
|-----> added to my own plugin
|-----> Consumer project
由于other plugins
,consumer project
需要在自己的build.sbt
中添加addCompilerPlugin
和enablePlugins
。
我在 my own plugin
的 build.sbt
中添加了 other plugins
。
我应该把 addCompilerPlugin
和 enablePlugins
放在我的插件的什么地方,这样 consumer project
就不必自己做?
谢谢
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[_]
将自动应用到该项目中,并使用指定的编译器插件来构建您的代码。
我看到了
结构如下:
other plugins
|-----> added to my own plugin
|-----> Consumer project
由于other plugins
,consumer project
需要在自己的build.sbt
中添加addCompilerPlugin
和enablePlugins
。
我在 my own plugin
的 build.sbt
中添加了 other plugins
。
我应该把 addCompilerPlugin
和 enablePlugins
放在我的插件的什么地方,这样 consumer project
就不必自己做?
谢谢
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[_]
将自动应用到该项目中,并使用指定的编译器插件来构建您的代码。