我正在编写一个sbt插件来抽象出一些涉及我使用的常见插件的样板.在这一过程中,该插件之一的我试图配置有它requires设置为noTrigger这需要显式启用在项目设置的插件.
随着SBT AutoPlugin如果我设置的requires = BuildInfoPlugin,并trigger = allRequirements再设置将自动加载,如果我明确地,令基地插件,或者如果我需要设置如上,并trigger = noTrigger随后加入明确我的工作将导入基础插件以及插件.
/* Requires enablePlugins(BuildInfoPlugin) to be explicitly set on project,
then the settings in this plugin will automatically load. */
object BuildInformation extends AutoPlugin {
override def requires = BuildInfoPlugin
override def trigger = allRequirements
}
Run Code Online (Sandbox Code Playgroud)
.
/* Requires enablePlugins(BuildInformation) to be explicitly set on project,
which will automatically import BuildInfoPlugin */
object BuildInformation extends AutoPlugin {
override def requires = BuildInfoPlugin
}
Run Code Online (Sandbox Code Playgroud)
有没有办法让衍生插件显式导入基本插件,而不需要明确添加派生插件本身?(例如PlayFramework的PlayScala插件会在sbt-native-packager中加载它,但是需要显式启用PlayScala)
我想到的一件事就是扩展基本插件,并覆盖它的触发器方法allRequirements,但是想知道是否有更清洁/更首选的方法.
并不比派生更优雅,但可能更灵活:
object DerivedPlugin extends AutoPlugin {
override def trigger: PluginTrigger = allRequirements
override def requires = JvmPlugin
val autoImport = BasePlugin.autoImport
override lazy val projectSettings = BasePlugin.projectSettings
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
528 次 |
| 最近记录: |