2015-12-27 11 views
2

我使用spray創建單頁應用程序,無法獲取sbt-web來處理我的任何輸入。我開始與WebJars,因爲,https://github.com/sbt/sbt-web/blob/master/README.md說:沒有播放的最小sbt-web管道

關於公衆和測試文件夾最後一件事...... 任何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文件夾。任何想法爲什麼?

參考文獻:

回答

2

這會學我。我使用的是舊版本的sbt-web。當我更新到最新時,它按預期工作。

的教訓是:不要複製/粘貼片段是這樣的:

addSbtPlugin( 「com.typesafe.sbt」 % 「SBT-網」 % 「1.0.2」)

來自網絡。但是,而是要找到最新版本,手動,通過以下方法之一:

  1. 如果GitHub的(等人)頁面有一個「構建傳遞」徽章,點擊它來導航到構建服務器,其中列出了最新版本。
  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 
    

我敢肯定有更好的方法來找到最新版本我只是不知道的事情。對於那些比我更有經驗的人,請以更好的方式評論。