2013-08-06 9 views
6

私はSBTプロジェクト、具体的にはPlay Framework 2.1プロジェクトを持っています。このプロジェクトには、設定で指定されたいくつかのサブプロジェクトがあります。コンパイル時に依存関係が正常に動作しているように見えますが、現在選択されているプロジェクトを「クリーン」にすると、その依存関係は除外されます。選択したプロジェクトとその従属サブプロジェクトの両方をクリーンアップする方法はありますか?すべての従属SBTサブプロジェクトを実行する

+2

すべての依存関係をクリーンアップすることは期待できません。集計が必要な場合がありますか? (ちょうどGoogleのsbt集約) –

答えて

6

あなたの主なプロジェクトは、このように、対象者を集約した場合:

lazy val root = Project("name", file(".")) 
    .aggregate(module1, module2, macros) 

、このルートプロジェクトに呼ばれる任意のコマンドは、すべてのサブプロジェクトのために実行されます。あなたはSBTセッションでinspect cleanコマンドを呼び出す場合は、コメントにサイドノートでは、このクリーン

に関連するすべてのサブプロジェクトが

aggregatedependsOnが異なるために異なるコマンドです関連セクションの下に、表示されます目的。 集約の目的は、ルートプロジェクトで実行されているコマンドを実行中です。私の例では、私のルートプロジェクトでtestコマンドを呼び出すことによって、このコマンドはmodule1module2macrosに対しても実行されます。このような動作を次の設定でオフにしたい場合:

aggregate in test := false 

集約プロジェクトは、コード内で独立しています。これは通常、ルートプロジェクトで使用されます。たとえば、各プロジェクトでtestを呼び出すのではなく、ルートで呼び出すようにします。集合コマンドの場合、並列に実行されることを記憶する。

dependsOnは、プロジェクトが他のプロジェクトのコードに依存することを意味します。そして、この場合、SBTはdependsOnのいくつかのモジュールであるcompileのルートプロジェクトに順番にコマンドを実行し、最初のステップでこれらのモジュールをコンパイルする必要があります。

+0

サイドノートで、私が.aggregateを使用する場合、私はまだ.dependsOnが必要ですか? dependsOnをaggregateに置き換えると、集約プロジェクトでコンパイラエラーが発生し、すべてが並行してコンパイルされているように見えます。 –

+0

@BenDilts私はあなたのサイドノートにいくつかの説明を追加しました – 4lex1v

関連する問題