2015-02-20 9 views
6

Mam problem z pobieraniem podprojektów SBT do rozpoznawania poleceń dostarczanych przez wtyczki. Mam następujące wtyczki źródło:Podprojekty SBT nie rozpoznają poleceń pluginów

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

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

który jest używany przez projekt skonfigurowany w następujący sposób:

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

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

Wtyczka jest, oczywiście, wymienione w project/plugins.sbt. Jednak, kiedy otwierają się SBT w projekcie, widzę następujące:

> 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 

Nawet obcy, wykorzystując consoleProject, widzę, że polecenie w projekcie jest zdefiniowany przez DemoPlugin!

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

Czekam, aby móc wpisać sub/demo i mają wykonywać polecenia z demo. Każda pomoc będzie doceniona!

Odpowiedz

1

Polecenia nie są przeznaczone do projektu. Działają tylko dla projektu najwyższego poziomu.

Zaleca się także, aby spróbować użyć zadań lub, jeśli to konieczne, zadań wejściowych, w których może zajść potrzeba użycia polecenia.

Jeśli naprawdę potrzebujesz polecenia, istnieje sposób, aby mieć coś w rodzaju zadania "właściciela", zobacz odpowiedź na Can you access a SBT SettingKey inside a Command?

Powiązane problemy