2013-06-24 14 views
5

Bu dizinde bir dosyayı her kaydettiğimde bir derleme görevi tetiklemek için watchedSources ayarına bir dizin eklemek istiyorum.SBT ayarlarında izleme kaynaklarına bir dizin ekleme

override def baseProject = play.Project(
    moduleName, 
    moduleVersion, 
    dependencies = libraries, 
    path = file(location), 
    settings = moduleSettings ++ Seq(
    watchSources <++= baseDirectory map { dir => 
     Seq(
     dir/"src/main/javascript" 
    ) 
    } 
) 
) 

aşağıdaki hata etrafında almak gibi olamaz:

type mismatch; 
[error] found : sbt.Project.Initialize[ScalaObject with Equals] 
[error] required: sbt.Project.Initialize[sbt.Task[?]] 
[error] Note: ScalaObject with Equals >: sbt.Task[?], but trait Initialize is invariant in type T. 
[error] You may wish to define T as -T instead. (SLS 4.5) 
[error]  watchSources <++= baseDirectory { f => 
[error]         ^
[error] one error found 
[error] (compile:compile) Compilation failed 
Project loading failed: (r)etry, (q)uit, (l)ast, or (i)gnore? 

nasıl izledi kaynaklar görev sonucuna dosyaların bir diziyi ekleme mı?

cevap

4
 watchSources <++= baseDirectory map { path => ((path/"src/main/webapp/coffee") ** "*.coffee").get } 
2

Oyunumla çok benzer bir sorun yaşadım; TÜM JavaScript dosyalarında değişiklik yapmak için SBT'nin public/js ve test/js (Jasmine testlerini içerir) izlemesini istiyorum. biz eklemek ve üzerinde get bir Seq[File] döndürür çağırarak, - (file("public/js") ** "*.js"):

val main = play.Project(appName, appVersion, appDependencies, settings = Defaults.defaultSettings ++ buildInfoSettings ++ scctSettings).settings(
testOptions in Test += Tests.Argument("junitxml", "console"), 
unmanagedResources in Compile ++= (file("public/js") ** "*.js").get, 
unmanagedResources in Test ++= (file("test/js") ** "*.js").get, 
... 

Yol Bulucu bu biraz:

çözüm aşağıdaki gibi yerleri aday bir SBT Path Finder ifadesini kullanmaktır (kaynakları izlenmesi için kabul edilir, fakat ideal değildir Scala) unmanagedResources