SCBTのScBETRA.JS PackageJSタスクに依存するScalatraコンパイルタスクの作成方法
質問
Scala.jsプロジェクトから生成されたJavaScriptを提供したいScalatraプロジェクトを持っています。
私は私がこれらのプロジェクトの両方をうまく構築することを可能にするマルチプロジェクトSBTビルドを持っています。 つまり、Scalatraプロジェクトでコンパイル(および実行)タスクを使用できます。そして、scala.jsプロジェクトでPackageJSタスクを使用できます。
しかし、Scala.js packagejsタスクに依存しているScalatraコンパイルタスクを依存できるようになりたいです。そのため、Scalatraプロジェクトがコンパイルされると、JavaScriptはScala.jsプロジェクトで自動的に生成されます。
マイマルチプロジェクトビルド.betファイルで私が試してみました:
lazy val wwwjs = project // Scala.js project
lazy val www = project // Scalatra project
.dependsOn(wwwjs % "compile->packageJS")
.
Scalatraプロジェクトをコンパイルするとき、これは「wwwjs#wwwjs_2.10で見つからない設定」で失敗します。www#www_2.10; 0.1コンパイル "。
SBT(およびScalatraとScala.js!)にはかなり新しいことができます - これを行う方法について誰かが私を啓発することができますか?
ありがとうございました:)
解決
ここにあるものは、プロジェクトの間の依存性ではありません(プロジェクト上のdependsOn
)がtasks
の間です。
私はScalatraに慣れていませんが、SBT側には遊ぶと非常に似ているはずです。 https://github.com/vmunier/play.-with-scalajs-example / blob / master / project / build.scala
特に、上記のビルドからの次の基本的な適応を導き出します。import scala.scalajs.sbtplugin.ScalaJSPlugin._ // if Build.scala
import ScalaJSKeys._
lazy val wwwjs = project // Scala.js project
lazy val www = project // Scalatra project
.settings(
compile in Compile <<= (compile in Compile) dependsOn (fastOptJS in (wwwjs, Compile))
)
.
あるいは、完全に最適化されたバージョンのためにfullOptJS
の代わりにfastOptJS
を使用します(ただし、変更を加えるたびに数秒かかります)。