Почему sbt сообщает "не найден: значение PlayScala" с Build.scala, а build.sbt работает?

Я создаю многомодульный проект sbt со следующей структурой:

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

LoggingModule - проект Play Framework, а common - простой проект Scala.

В 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)
                                                                          ^

Как решить проблему?

Ответ 1

Это просто недостающий импорт.

В файлах .sbt некоторые вещи автоматически импортируются по умолчанию: содержимое объектов, расширяющих Plugin, и ( >= 0.13.5) autoImport поля в AutoPlugin s. Это относится к PlayScala.

В файле Build.scala применяются обычные правила импорта Scala. Таким образом, вы должны импортировать вещи более явно. В этом случае вам нужно import play.PlayScala (или использовать .enabledPlugins(play.PlayScala) напрямую).

Ответ 2

У меня такая же проблема, я уже перепробовал много вещей, которые нашел в сети, но без решения до сих пор, пожалуйста, кто-нибудь может мне помочь.

Мой проект /build.properties есть только

sbt.version=1.2.1

Мой build.sbt это тот

version := "1.0-SNAPSHOT"
scalaVersion := "2.11.1"

libraryDependencies ++= Seq(
    jdbc,
    anorm,
    cache,
    ws,
   "com.wordnik" %% "swagger-play2" % "1.3.10",
   "org.scalikejdbc" %% "scalikejdbc"                       % "2.1.4",
   "org.scalikejdbc" %% "scalikejdbc-play-plugin"           % "2.3.3",
   "org.scalikejdbc" %% "scalikejdbc-play-fixture-plugin"   % "2.3.3",
   "com.typesafe.play" %% "sbt-plugin" % "2.3.3"

)

lazy val root = (проект в файле (".")). enablePlugins (PlayScala)