我遇到了让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命令.任何帮助将非常感激!
命令不是针对每个项目的。他们只为顶级项目工作。
还建议尝试使用任务,或者如果需要,在您可能想要使用命令的地方输入任务。
如果您确实需要命令,可以通过一种方法来执行“持有者”任务,请参阅您可以在命令中访问 SBT 设置密钥吗?
| 归档时间: | 
 | 
| 查看次数: | 88 次 | 
| 最近记录: |