【问题标题】:Why does sbt report "not found: value PlayScala" with Build.scala while build.sbt works?为什么 sbt 在 build.sbt 工作时使用 Build.scala 报告“未找到:value PlayScala”?
【发布时间】:2014-11-25 20:43:51
【问题描述】:

我正在创建一个多模块 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)
                                                                          ^

如何解决这个问题?

【问题讨论】:

    标签: scala playframework sbt


    【解决方案1】:

    这只是缺少导入。

    .sbt 文件中,默认情况下会自动导入一些内容:扩展Plugin 的对象的内容,以及AutoPlugins 中的(>= 0.13.5) autoImport 字段。这是PlayScala的情况。

    Build.scala 文件中,应用正常的 Scala 导入规则。所以你必须更明确地导入一些东西。这种情况下需要import play.PlayScala(或者直接使用.enabledPlugins(play.PlayScala))。

    【讨论】:

    • 谢谢@sjrd。像魅力一样工作!
    • 使用 Play 2.5.x,导入现在是 play.sbt.PlayScala
    猜你喜欢
    • 1970-01-01
    • 2014-12-02
    • 2013-08-02
    • 2015-02-23
    • 2016-09-23
    • 2014-07-10
    • 2014-12-11
    • 2014-10-22
    • 1970-01-01
    相关资源
    最近更新 更多