2016-09-21 24 views
1

私はサブモジュールとしてクライアント・ライブラリを持つ再生フレームワーク・プロジェクトを持っています。私はデータベース移行のためにフライウェイを使用しています。私はflywayのコマンド(sbt flywayMigrateなど)を使用すると、そのコマンドをルートプロジェクトに対して1回、クライアントライブラリサブモジュールに対して2回実行します。フライウェイ・マイグレーション(マルチプロジェクト):サブモジュールではなくメイン・モジュールのSBTコマンドを実行

サブモジュールではなく、プロジェクトのみに対してSBTコマンドを実行する方法はありますか?
sbt clientLibrary/flywayMigrateはサブモジュールに対してのみコマンドを実行しますが、sbt root/flywayMigrateは両方に対してコマンドを実行します。

私はthis answerを見てきましたが、これは1つのサブモジュールしか実行できないが、メインモジュールとサブモジュールの実行には役立たない。

EDIT: 私はクライアントライブラリをルート用に集約していますが、それを削除するとデフォルトではルート用のコマンドが実行されます。しかし、私はすべてのモジュールをデフォルトで実行することが望ましいと思っています。私は除外するのではなく、モジュールの除外を指定したいと思います。

+0

多分それはあなたを助けるでしょうか? http://stackoverflow.com/questions/39551712/sbt-unidoc-how-to-exclude-a-sub-module-from-a-rootproject –

+0

@AlexeySoshinそれは私の方向性を指摘します、私は私の質問を更新します詳細はこちら – kag0

答えて

3

http://www.scala-sbt.org/0.13/docs/Multi-Project.html#Aggregationを参照してください:プロジェクトで

凝集をやって、この場合、ルートプロジェクトは、タスク単位の凝集を制御することができます。たとえば、更新タスク集計を避けるために:あなたのケースでは

lazy val root = (project in file(".")). 
    aggregate(util, core). 
    settings(
    aggregate in update := false 
) 

を、代わりにaggregate in flywayMigrate := falseを設定します。これを1回だけ行うには、

sbt "; set aggregate in (ThisBuild, flywayMigrate) := false; root/flywayMigrate" 

が有効です。

+0

完璧、ありがとう – kag0

関連する問題