2014-10-01 16 views
10

aşağıdaki yapıya sahip bir çok modül sbt proje oluşturma ediyorum: common basit Scala projesi iseNeden build.sbt çalışır iken sbt rapor "bulunamadı: PlayScala" Build.scala ile çalışır?

<root> 
----build.sbt 
----project 
    ----Build.scala 
    ----plugins.sbt 
----common 
----LoggingModule 

LoggingModule bir Oynat Çerçeve projedir. plugins.sbt yılında

:

resolvers += "Typesafe repo" at "http://repo.typesafe.com/typesafe/releases/" 

addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.3.3") 

ben build.sbt bu varken, tüm iyi çalışıyor ve PlayScala tanır:

name := "Multi-Build" 

lazy val root = project.in(file(".")).aggregate(common, LoggingModule).dependsOn(common, LoggingModule) 

lazy val common = project in file("common") 

lazy val LoggingModule = (project in file("LoggingModule")).enablePlugins(PlayScala) 

Ancak en kısa zamanda build.sbt `yerine project/Build.scala bu koymak 'aşağıdaki gibi:

object RootBuild extends Build { 

    lazy val root = project.in(file(".")) 
    .aggregate(common, LoggingModule) 
    .dependsOn(common, LoggingModule) 

    lazy val common = project in file("common") 
    lazy val LoggingModule = (project in file("LoggingModule")).enablePlugins(PlayScala) 

    ...//other settings 
} 

hata üretir:

not found: value PlayScala 
lazy val LoggingModule = (project in file("LoggingModule")).enablePlugins(PlayScala) 
                     ^

Sorun nasıl çözülür?

cevap

14

Sadece eksik bir ithalat.

.sbt dosyalarda, bazı şeyler varsayılan olarak otomatik alınır: nesnelerin içerikleri Plugin uzanan ve (> = 0.13.5) AutoPlugin s autoImport alanlar. Bu, PlayScala örneğidir.

Build.scala dosyasında normal Scala içe aktarma kuralları geçerlidir. Bu yüzden bazı şeyleri daha açık bir şekilde almanız gerekiyor. Bu durumda, import play.PlayScala'a (veya doğrudan .enabledPlugins(play.PlayScala) kullanın) gerek duyarsınız.

+0

Teşekkürler @sjrd. ÇALIŞIYOR bir cazibe gibi! –

+1

Play 2.5.x ile, içe aktarma şu anda 'play.sbt.PlayScala''dır – n1r3

İlgili konular