Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 在另一个SBT插件中显式启用SBT插件_Scala_Sbt - Fatal编程技术网

Scala 在另一个SBT插件中显式启用SBT插件

Scala 在另一个SBT插件中显式启用SBT插件,scala,sbt,Scala,Sbt,我正在写一个sbt插件来抽象出一些我使用的一些常见插件的样板文件。在这个任务中,我试图配置的是它的requires设置为noTrigger,这需要在项目设置中显式启用插件 使用SBT AutoPlugin的if I setrequires=BuildInfoPlugin和trigger=allRequirements时,如果我显式启用基本插件,设置将自动加载,或者如果我如上所述设置requires和trigger=noTrigger,则显式添加我正在使用的插件也将导入基本插件 /* Requir

我正在写一个sbt插件来抽象出一些我使用的一些常见插件的样板文件。在这个任务中,我试图配置的是它的
requires
设置为
noTrigger
,这需要在项目设置中显式启用插件

使用SBT AutoPlugin的if I set
requires=BuildInfoPlugin
trigger=allRequirements
时,如果我显式启用基本插件,设置将自动加载,或者如果我如上所述设置requires和
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
}

有没有办法让派生插件显式导入基本插件,而不需要显式添加派生插件本身?(例如,PlayFramework中的PlayScala插件在加载时会拉入sbt本机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

}
object DerivedPlugin extends AutoPlugin {

  override def trigger: PluginTrigger = allRequirements
  override def requires = JvmPlugin

  val autoImport = BasePlugin.autoImport

  override lazy val projectSettings = BasePlugin.projectSettings

}