SBT 子项目无法识别插件命令

Posted

技术标签:

【中文标题】SBT 子项目无法识别插件命令【英文标题】:SBT Subprojects do not recognize plugin commands 【发布时间】:2015-04-22 14:25:41 【问题描述】:

我在让 SBT 子项目识别插件提供的命令时遇到问题。我有以下插件源:

object DemoPlugin extends AutoPlugin 
  override lazy val projectSettings = Seq(commands += demoCommand)

  lazy val demoCommand =
    Command.command("demo")  (state: State) =>
      println("Demo Plugin!")
      state
    

由配置如下的项目使用:

lazy val root = project in file(".")

lazy val sub = (project in file("sub")).
  enablePlugins(DemoPlugin).
  settings(
    //...
  )

该插件当然在project/plugins.sbt 中列出。但是,当我在项目中打开 sbt 时,会看到以下内容:

> sub/commands
[info] List(sbt.SimpleCommand@413d2cd1)
> sub/demo
[error] Expected ':' (if selecting a configuration)
[error] Not a valid key: demo (similar: doc)
[error] sub/demo

更陌生,使用consoleProject,我可以看到项目中的命令是DemoPlugin定义的那个!

scala> (commands in sub).eval.map  c => c.getClass.getMethod("name").invoke(c) 
res0: Seq[Object] = List(demo)

我希望能够输入sub/demo,并让它执行demo 命令。任何帮助将不胜感激!

【问题讨论】:

【参考方案1】:

命令不是针对每个项目的。它们只适用于***项目。

还建议尝试使用任务,或者如果需要输入您可能想要使用命令的任务。

如果你真的需要命令,有一种方法可以有一种“持有人”任务,请参阅Can you access a SBT SettingKey inside a Command?的答案

【讨论】:

以上是关于SBT 子项目无法识别插件命令的主要内容,如果未能解决你的问题,请参考以下文章

VST 插件在 OSX 上无法识别

OpenOffice Eclipse 插件无法识别 OpenOffice SDK

IntelliJ 无法识别 Kotlin JPA 插件

运行flutter项目时无法识别pod命令

自定义 Cordova 插件 iOS index.js 无法识别我的 .js 文件

Eclipse Neon.2 无法识别 Android ADT