我有一个相当复杂的项目——它使用 Play、Scala.js 和其他各种玩具。它暂时在 Build.scala 中构建,因为我还没有设法让所有部分都在 build.sbt 中工作。 (我已经在 sbt 邮件列表中单独讨论过这个问题。)
现在,我想利用 Play 的新指纹识别功能,这意味着开始使用 sbt-web。不过,我显然做错了什么。我在我的 plugins.sbt 中添加了常用的管道插件:
addSbtPlugin("com.typesafe.sbt" % "sbt-rjs" % "1.0.1")
addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "1.0.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-gzip" % "1.0.0")
但是当我尝试将 SbtWeb 添加到项目的 JVM 端时:
lazy val scalajvm = Project(
id = "scalajvm",
base = file("scalajvm")
) enablePlugins (play.PlayScala, SbtWeb) settings (scalajvmSettings: _*) aggregate (scalajs)
sbt 提示它不知道 SbtWeb,并且不会加载。奇怪的。我添加了一个显式导入:
import com.typesafe.sbt.web.SbtWeb
这允许加载。然后,我试图让管道本身工作:
pipelineStages := Seq(digest, gzip),
现在它提示它不知道 pipelineStages。同样,我添加了一个显式导入,尽管我怀疑我做错了什么:
import com.typesafe.sbt.web.Import.pipelineStages
这让我进入下一步:它提示它不知道摘要——这完全是神秘的,因为我已经在我的 plugins.sbt 中指定了它。
有什么建议么?我的猜测是我在插件级别缺少一些东西,但我不知道它是什么。我能找到的所有文档都只列出了上面的内容,但我认为这都是假设 build.sbt。 (是的,我在 build.properties 中指定了 sbt 0.13.5,在我的 plugins.sbt 中指定了 Play 2.3.5。)
最佳答案
我也在我的项目中使用来自 Build.scala 的 sbt-web。您将需要以下导入:
import com.typesafe.sbt.digest.Import._
import com.typesafe.sbt.gzip.Import._
import com.typesafe.sbt.rjs.Import._
import com.typesafe.sbt.web.Import._
每个管道对象(
TaskKey[Pipeline.Stage]
类型的值)都来自相应模块的 Import 对象。为什么它的结构是这样的,我不确定。我记得当我第一次开始这个工作时,我也对这个所需的包含有同样的好奇。我认为它的结构部分是为了支持 sbt 的自动插件功能。
关于scala - 如何让 sbt-web 在 Build.scala 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26392103/