Ich habe ein Problem damit, SBT-Teilprojekte dazu zu bringen, die von Plugins bereitgestellten Befehle zu erkennen. Ich habe folgende Plugin Quelle:SBT-Teilprojekte erkennen keine Plugin-Befehle
object DemoPlugin extends AutoPlugin {
override lazy val projectSettings = Seq(commands += demoCommand)
lazy val demoCommand =
Command.command("demo") { (state: State) =>
println("Demo Plugin!")
state
}
}
, die von einem Projekt wie folgt konfiguriert verwendet wird:
lazy val root = project in file(".")
lazy val sub = (project in file("sub")).
enablePlugins(DemoPlugin).
settings(
//...
)
Das Plugin ist natürlich, aufgeführt in project/plugins.sbt
. Allerdings, wenn ich sbt im Projekt öffnen, sehe ich folgende:
> sub/commands
[info] List([email protected])
> sub/demo
[error] Expected ':' (if selecting a configuration)
[error] Not a valid key: demo (similar: doc)
[error] sub/demo
Noch seltsame, consoleProject
verwendet wird, kann ich sehen, dass der Befehl in dem Projekt die ein von DemoPlugin
definiert ist!
scala> (commands in sub).eval.map { c => c.getClass.getMethod("name").invoke(c) }
res0: Seq[Object] = List(demo)
Ich suche sub/demo
in der Lage sein, zu geben und haben es den demo
Befehl auszuführen. Jede Hilfe würde sehr geschätzt werden!