2014-10-01 23 views
10

我創建一個多模塊SBT項目,結構如下:爲什麼sbt報告「找不到:值PlayScala」與Build.scala而build.sbt的作品?

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

LoggingModule是一個遊戲框架項目,而common是一個簡單的斯卡拉項目。

plugins.sbt

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

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

雖然我有這個在build.sbt,一切工作正常,並承認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) 

但是,一旦我把這個project/Build.scala代替build.sbt的` '如下:

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 
} 

它產生的錯誤爲:

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

如何解決這個問題?

回答

14

這只是一個缺少的導入。

.sbt文件,一些事情被自動默認導入:對象的內容延伸Plugin,和(> = 0.13.5)在AutoPlugin小號autoImport字段。這是PlayScala的情況。

Build.scala文件中,正常的Scala導入規則適用。所以你必須更明確地導入一些東西。在這種情況下,您需要import play.PlayScala(或直接使用.enabledPlugins(play.PlayScala))。

+0

謝謝@sjrd。奇蹟般有效! – 2014-10-01 09:04:57

+1

使用Play 2.5.x,導入現在是'play.sbt.PlayScala' – n1r3 2016-05-05 09:23:16

相關問題