2017-07-14 13 views
0

Scala JSのサーバー/クライアントプロジェクトで、いくつかのソースを変更して、サーバーやその他のソースを再起動してパッケージ化プロセスをトリガーします。彼らは単にどちらかと他のことを行うため、私は同時に両方が欲しいので、さまざまなタスクは助けになりません。SBT - タスクに応じて異なるソースを見る

詳細: 私はScala.jsのクロスプロジェクトを持っています。私は、構築されたJavScriptを提供することができ、サーバーを確保するために、以下の使用しています:

val app = crossProject.settings(...) 
lazy val appJS = app.js 
lazy val jsFile = fastOptJS in(appJS, Compile) 
lazy val appJVM = app.jvm.settings(
    (resources in Compile) += jsFile.value.data, 
    (resources in Compile) += jsFile.value.data.toPath.resolveSibling(jsFile.value.data.name+".map").toFile, 
    (resources in Compile) += (packageJSDependencies in(appJS, Compile)).value 
) 

私は~ appJVM/compile:packageBin::packageConfigurationが、その後すぐにコンパイルされ、appJVMターゲット/クラスディレクトリに配置されているJavaScriptのソースに変更を実行した場合、のようにリフレッシュブラウザは私の新しいコードを手に入れます。

しかし、サーバー側のコードを編集すると、sbt-revolverプラグインを使用してサーバーを再起動することもできます。しかし、擦れがあります - ~ ;appJVM/compile:packageBin::packageConfiguration;appJVM/reStartを使用すると、クライアント側のソースに変更があっても、サーバーを再起動します。これは望ましくありません。しかし、クライアント側のプロジェクトを推移的な時計から削除しても、クライアント側のプロジェクトを変更してもそれ以上気付かないのです。

タスクごとにwatchTransitiveSourcesを別々に定義する方法はありますか?

+0

もっと一般的には私は '' '' '' '' ''を全く使わず、任意のファイルセットと彼らが変更するたびにいくつかの他のタスクを実行しますが、私のグーグルが私を失望させている - 私はこれをやっている人の例を見つけることができません。 –

+0

私はあなたの質問がより簡単に書くことができると思います。また、答えを示唆するのではなく、あなたの必要性を説明してください。私が正しく理解していれば、いくつかのソースを変更して、サーバやその他のソースを再起動してパッケージングプロセスを起動させたいが、再起動は必要ありません。彼らは単にどちらか一方をして、あなたは両方を同じ時間にしたいので、異なる仕事は助けにならないでしょう。あれは正しいですか? – Atais

+0

はい、それは正しいです。私はあなたの言葉に私の最初の段落を変更します。 –

答えて

0

~が実際にベースのプロジェクトの推移ソースを監視して、同期を再実行する前に、元の、とき、それらの変更、それに引数として渡されたすべてのものを実行するコマンドであります入力(〜を含む)。これらのコマンドライン入力に何が変更されたかについての情報はありません(どのように表示するのが難しいか)。

私の解決策は、新しい監視コマンドを書くことです。また、すべてのソースを監視する必要がありますが、変更されたファイルに基づいて何をすべきかを条件付きで選択する必要があります。

私はこれを行うものとして何か醜いものをハッキングしましたが、読みやすく、一般的で、テストして、プラグインにすることを目指します。しかし、その間に私の道を歩む人は誰でもこの公の要点を使うことができます:https://gist.github.com/LeisureMonitoringAdmin/0eb2e775e47b40f07d9e6d58d17b6d52

0

sbt-resolverは、sbt-revolverではありませんか?

もう一つは

  • watchSourcesを使用してtriggeredリソースを制御することができますので - 変更のため を監視している単一のプロジェクトのためのファイルを定義します。デフォルトでは、プロジェクトはリソースを監視し、 スカラとJavaソースを監視します。
  • watchTransitiveSourcesは - そして、現在のプロジェクトとすべての実行とクラスパス 依存関係(相互プロジェクト 依存関係の詳細については.scala build definitionを参照) watchSourcesを兼ね備えています。

出典:http://www.scala-sbt.org/0.13/docs/Triggered-Execution.html

+0

はい、sbt-revolver - タイプミス。 私はドキュメントを読んだ。彼らは私の問題をカバーしていません - 同じプロジェクトのタスクに応じてさまざまなソースを見ています。 –

関連する問題