我正在使用 Spray 创建单页应用程序,但无法让 sbt-web 处理我的任何输入。我从 WebJars 开始,因为https://github.com/sbt/sbt-web/blob/master/README.md说:
关于 public 和 public-test 文件夹的最后一件事......项目依赖的任何 WebJar 都将自动提取到这些文件夹中,例如 target/web/public/lib/jquery/jquery.js。
但是,我在目标文件夹中看不到这样的“网络”文件夹。我想也许 WebJars 的例子太复杂了,所以我改为在资产文件夹的根目录中添加了一个 jquery.js 文件,并设置 sbt-uglify 对其进行一些处理。然而,我仍然没有看到 SbtWeb 有效的证据。我已经运行sbt --debug clean run
并 grepped 了来自 SbtWeb 或 Uglify 的任何输出的输出,但没有错误或警告,并且在 SbtWeb 或 Uglify 中找不到任何内容。只需承认它似乎“推断”了插件:
[debug] deducing auto plugins based on known facts [debug] :: sorting:: found:
...
[debug] :: sorted deduced result: List(sbt.plugins.CorePlugin, com.typesafe.sbt.web.SbtWeb, com.typesafe.sbt.jse.SbtJsEngine, net.ground5hark.sbt.concat.SbtConcat, sbt.plugins.IvyPlugin, com.typesafe.sbt.jse.SbtJsTask, sbt.plugins.JvmPlugin, com.typesafe.sbt.uglify.SbtUglify, sbt.plugins.JUnitXmlReportPlugin)
这是我的目录结构:
./build.sbt
./project/plugins.sbt
./src/main/assets/js/jquery.js
./src/main/resources/html/uikit/login.html
./src/main/scala/Boot.scala
./src/main/scala/main.scala
这是我的项目/plugins.sbt:
resolvers += Resolver.sonatypeRepo("releases")
addSbtPlugin("com.typesafe.sbt" % "sbt-web" % "1.0.2")
addSbtPlugin("net.ground5hark.sbt" % "sbt-concat" % "0.1.8")
addSbtPlugin("com.typesafe.sbt" % "sbt-uglify" % "1.0.3")
这是我的./build.sbt:
organization := "com.test123.spray"
version := "0.1"
scalaVersion := "2.11.6"
scalacOptions := Seq("-unchecked", "-deprecation", "-encoding", "utf8")
libraryDependencies ++= {
val akkaV = "2.3.9"
val sprayV = "1.3.3"
Seq(
"io.spray" %% "spray-can" % sprayV,
"io.spray" %% "spray-routing" % sprayV,
"io.spray" %% "spray-testkit" % sprayV % "test",
"com.typesafe.akka" %% "akka-actor" % akkaV,
"com.typesafe.akka" %% "akka-testkit" % akkaV % "test",
// client side dependencies
"org.webjars" % "jquery" % "2.1.4",
"org.webjars" % "uikit" % "2.24.2"
)
}
lazy val root = (project.in(file("."))).enablePlugins(SbtWeb)
pipelineStages := Seq(uglify)
includeFilter in uglify := GlobFilter("js/*.js")
这是我的 ./target 文件夹的根目录:
resolution-cache/
scala-2.11/
streams/
没有./target/web
文件夹。任何想法为什么?
参考: