2015-02-20 20 views
6

SBT Alt projelerinin eklentiler tarafından sağlanan komutları tanımasıyla ilgili bir sorun yaşıyorum. Aşağıdaki eklenti kaynağına sahip: olarak yapılandırılmış bir proje tarafından kullanılanSBT Alt projeleri eklenti komutlarını tanımıyor

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

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

aşağıdaki gibidir:

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

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

eklentisi project/plugins.sbt listelenen, tabii ki. Ben projede SBT açmak Ancak, aşağıdaki bakın: consoleProject kullanılarak

> 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 

Hatta yabancı

, ben projede komut DemoPlugin tarafından tanımlanan biri olduğunu görebilirsiniz!

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

Ben sub/demo yazın ve bu demo komutu gerçekleştirmek sahip olabilmek için arıyorum. Herhangi bir yardım çok takdir edilecektir!

cevap

1

Komutlar proje başına değil. Sadece üst düzey proje için çalışıyorlar.

Ayrıca, görevleri kullanmayı denemeniz veya bir komutu kullanmak isteyebileceğiniz giriş görevleri gerekiyorsa önerilir.

Eğer gerçekten bir komut gerekiyorsa, "tutucu" görevin bir tür için bir yol var, Can you access a SBT SettingKey inside a Command?

verilen cevaba bakınız