2

スプレーを使用して単一ページのアプリを作成していますが、sbt-web で入力を処理できません。https://github.com/sbt/sbt-web/blob/master/README.mdは次のように述べているため、WebJars から始めました。

public および public-test フォルダーに関して最後に 1 つ...プロジェクトが依存する WebJar は、これらのフォルダー(たとえば、target/web/public/lib/jquery/jquery.js) に自動的に抽出されます。

ただし、ターゲットフォルダーにそのような「web」フォルダーはありません。WebJars は例としては複雑すぎて最初から始められないのではないかと思ったので、代わりに jquery.js ファイルをアセット フォルダーのルートに追加し、sbt-uglify をセットアップして処理を行いました。それでも、SbtWeb が機能しているという証拠はまだありません。sbt --debug clean runSbtWeb または Uglify からの出力を実行して grep しましたが、エラーや警告はなく、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フォルダがありません。理由はありますか?

参考文献:

4

1 に答える 1

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
    

私が知らないものの最新バージョンを見つけるためのより良い方法があると確信しています. 私よりも経験豊富な方は、より良い方法でコメントしてください。

于 2015-12-28T20:29:11.280 に答える