プラグインが提供するコマンドを 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
。どんな助けでも大歓迎です!