2014-10-01 11 views
10

Io sono la creazione di un progetto SBT multi-modulo, con seguente struttura:Perché sbt segnala "not found: value PlayScala" con Build.scala mentre build.sbt funziona?

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

LoggingModule è un progetto quadro Play, mentre common è un semplice progetto Scala.

In plugins.sbt:

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

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

Mentre ho questo in build.sbt, tutto funziona bene e riconosce PlayScala:

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) 

Tuttavia, non appena ho messo questo in project/Build.scala invece di `build.sbt 'come segue:

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 
} 

genera errore come:

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

Come risolvere il problema?

risposta

14

È solo un'importazione mancante.

In .sbt file, alcune cose vengono automaticamente importati per impostazione predefinita: il contenuto degli oggetti che si estende Plugin, e (> = 0.13.5) autoImport campi in AutoPlugin s. Questo è il caso di PlayScala.

In un file Build.scala, si applicano le normali regole di importazione di Scala. Quindi devi importare le cose in modo un po 'più esplicito. In questo caso, è necessario import play.PlayScala (oppure utilizzare direttamente .enabledPlugins(play.PlayScala)).

+0

Grazie a @sjrd. Funziona come un fascino! –

+1

Con Play 2.5.x, l'importazione è ora 'play.sbt.PlayScala' – n1r3