Gradleは1つのモジュールのみをビルドします


152

複数モジュールのgradleビルドがあります。ルートを使用して1つのモジュールのターゲットを実行したい。例:

gradle build -Pmodule=ABC
gradle jar -Pmodule=ABC
gradle test -Pmodule=ABC
gradle compileJava -Pmodule=ABC
gradle customTask -Pmodule=ABC
etc.

したがって、すべてのターゲットは、モジュールを指定してルートから実行できます。これを行う簡単な方法はありますか?

よろしくお願いします!


if (project.hasProperty('module') && module.equals('ABC')) { // execute module ABC } ...。これはあなたが達成したいことですか?
pepuch

@pepuch、明確にしていただけませんか?aarが含まれているアプリに更新をプッシュしたいのですが、ライブラリを再構築せずに、アプリの変更のみをビルドします。
The_Martian

回答:


302

特定のサブプロジェクトのタスクを実行するには、そのタスクパスを指定します。例えば:

gradle :ABC:build

先頭:はルートプロジェクトを表します。ABCサブプロジェクトでありbuild、そのプロジェクトのタスクです。


4
コマンドラインではなく構成を使用して、多数のサブプロジェクトから1つだけを組み立てるにはどうすればよいですか?Googleのリリースパイプラインでは、ルートプロジェクトの「gradle clean assembly」が起動されます。私にとって、それはAppEngineとAndroidビルドをビルドしようとします。SDKがインストールされていないため、Androidビルドではリリースパイプラインが失敗します。これは一時的なマシンで理解できます。また、Release Pipelinesが構成オプションを提供しているようにも見えません。
brunobowden 14年

私の場合、ルートプロジェクトはまだ検査されており、現時点では処理したくないエラーメッセージが表示されます。とてもうるさい。
Wolfgang Fahl 2017年

gradle :ABC:clean :ABC:build
StanislavKo

gradle build -p moduleAの方が優れています。モジュールの依存関係を処理します。
John

84

簡単な方法を見つけた

gradle build -p moduleA

moduleAはモジュールのディレクトリです。

上記のコマンドはmoduleAとそのすべてのサブモジュールを構築し、moduleAそのパスでなければなりません


4
上記のコマンドはmoudleAとそのすべてのサブモジュールを構築し、moduleAはそのパスである必要があります gradle build -p path\pathSt\moduleA
Viraj

1
独自のgradleファイルを持たないサブプロジェクトのラッパーがあります。選択した回答とは異なり、これは私にとってはうまくいきます。また、コメントの明確化に感謝します。回答に追加していただけませんか?
Vlasec

24

Mac OSでは、私で動作する唯一のバリアント:

./gradlew  ABC:build

ABC モジュールの名前です

(Linuxでも動作している可能性があります)


5

ここに画像の説明を入力してください

IDEがAndroid Studioの場合、簡単な方法があります。コンパイルするモジュールフォルダーを選択し、[ビルド]をクリックして、[モジュールを 'your module folder'にする]を選択します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.