【问题标题】:How do I get sbt-web working in Build.scala?如何让 sbt-web 在 Build.scala 中工作?
【发布时间】:2014-12-11 02:15:33
【问题描述】:

我有一个相当复杂的项目——它使用 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。)

【问题讨论】:

    标签: scala sbt sbt-web


    【解决方案1】:

    我也在我的项目中使用来自我的 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 的自动插件功能。

    【讨论】:

      【解决方案2】:

      通常会自动导入digest 任务,因为它是AutoPlugin。您可以显式导入它:

      import com.typesafe.sbt.digest.Import.digest
      

      【讨论】:

      • AutoPlugins 在 Build.scala 中不起作用吗?我试图弄清楚是否需要明确地执行所有这些导入是预期的行为,还是表明某些事情更严重的错误。 (我可以相信 AutoPlugins 是 build.sbt-only,但我对它们了解不多......)
      • AutoPlugins 是“自动的”,因为它们会自动引入它们的设置和依赖项。因此,当您执行 enablePlugins(SbtWeb) 时,您还将获得所有依赖于 SbtWeb 的设置(例如 sbt-digest)。 “自动”与在 Build.scala 中自动将符号带入范围没有任何关系——不过这将是相当的技巧!
      猜你喜欢
      • 1970-01-01
      • 2017-01-07
      • 1970-01-01
      • 2013-05-26
      • 2012-06-14
      • 1970-01-01
      • 2012-05-03
      • 2015-02-06
      • 2015-09-17
      相关资源
      最近更新 更多