没有播放的最小sbt-web管道

时间:2015-12-27 22:02:12

标签: sbt spray sbt-web

我正在使用spray创建一个单页应用程序,并且无法让sbt-web处理我的任何输入。我从WebJars开始,因为https://github.com/sbt/sbt-web/blob/master/README.md说:

  

关于公共和公共测试文件夹的最后一件事...... 项目所依赖的任何WebJar将自动提取到这些文件夹中,例如目标/网络/公共/ LIB / jquery的/的jquery.js。

但是,我在目标文件夹中看不到这样的“web”文件夹。我想也许WebJars的例子太复杂了,所以我改为将jquery.js文件添加到资产文件夹的根目录,并设置sbt-uglify对其进行一些处理。然而,我仍然没有看到证据表明SbtWeb正在发挥作用。我已经运行sbt --debug clean run并为输出来获取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个文件夹。有什么想法吗?

参考文献:

1 个答案:

答案 0 :(得分:2)

那会学习我。我使用的是旧版本的sbt-web。当我将其更新到最新版本时,它会按预期工作。

本课程不是复制/粘贴这样的片段:

  

addSbtPlugin(" com.typesafe.sbt"%" sbt-web"%" 1.0.2")

来自网络。但是,请通过以下方法之一手动查找最新版本:

  1. 如果GitHub(等)页面有" Build Passing"徽章,单击它以导航到列出最新版本的构建服务器。
  2. 查看GitHub中的分支
  3. 查看是否可以导航到依赖项的存储库,例如Maven Central,并在那里浏览。我没有运气这个。我遇到的问题是我知道它不是Maven,并且不知道还有什么要看。
  4. 在SBT中插入一些虚假版本,并查看SBT试图查看和失败的输出:

    [warn]  module not found: com.typesafe.sbt#sbt-web;3.1.2
    [warn] ==== typesafe-ivy-releases: tried
    [warn]   http://repo.typesafe.com/typesafe/ivy-releases/com.typesafe.sbt/sbt-web/scala_2.10/sbt_0.13/3.1.2/ivys/ivy.xml
    [warn] ==== sbt-plugin-releases: tried
    [warn]   http://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.typesafe.sbt/sbt-web/scala_2.10/sbt_0.13/3.1.2/ivys/ivy.xml
    
  5. 我很肯定有更好的方法可以找到我不知道的最新版本的东西。对于那些比我更有经验的人,请以更好的方式发表评论。