2013-03-22 18 views
5

SBTでは、ソースファイルが変更されるたびにアクションをトリガするために「〜」マークを使用できます。たとえば、Scala SBT:ローカル依存関係が変更されたときのアクションのトリガー

sbt> ~test 

ソースが変更されるたびに単位テストが実行されます。

は、ソースがまたはローカル依存関係の変化を変更するたびにアクションをトリガするために任意の良い方法はありますか?これは、2つのプロジェクトを同時に開発する場合に便利です。一方は他方に依存します。

私はあなたが手動でfileまたはthe base projectへのパスを指定することで、この動作を得ることができます知っているが、それは脆くだし、それはその地域のアーティファクトを取得していますどこSBTはすでに知っているので、それは私が避けたいのですが何か。

答えて

1

Triggered Executionのドキュメントから、watchSourcesタスクでは、監視するファイルを追加できます。

another questionから、managedClasspathタスクは、管理対象の依存関係に由来するクラスパスの部分を提供します。

続いて、次の定義は、トリガの実行を監視するために、ファイルへの管理、テストクラスパスを追加します。

watchSources <++= 
    (managedClasspath in Test) map { cp => cp.files } 

はあなたがトリガする各プロジェクトでこれを定義します。

+0

"〜コンパイル"コマンドを使用するだけで、その設定で明らかな無限ループが発生します。 – emchristiansen

+0

sbtコードにループがある、または何も変わっていないときや何か他のことが起こったときに再トリガーを続けることを意味しますか?関連性のあるその他の情報:どのバージョンのsbtとどのプラグインを使用していますか? –

+0

例は次のとおりです。https://github.com/emchristiansen/WatchDependenciesInfiniteLoop – emchristiansen