マルチモジュールスプリングプロジェクトによるGradleデーモン
私は、春にマルチモジュールプロジェクトを扱っている方法を共有したいです.特に、Gradleデーモンを利用して、複数のWebアプリケーションを一度に起動する方法.
問題
私は、一緒に走らなければならない異なるウェブアプリから成るマルチモジュールプロジェクトを持っています.
私はその実行に気づいた
コマンドでチェックできます.
これは、Gradleデーモンがリソースの項で全く熱心で、異なったインスタンスを持つことが非常に目的を無視するので、大きなパフォーマンス影響を持ちます.
なぜそれが起こるのですか.
第2春アプリケーションが既存のデーモンを使用していない理由は、
どうしたらいいですか.
Gradleデーモンを無効にしたくないとしたら(もちろん、問題は解決します).または、単に(例えば、IDEによって使われているTooling APIはデーモンを起動します)というわけではありません.
そう?
後者が実際に正しいアプローチであることがわかりますが、私たちはparallel executionを有効にしなければなりません.そして、それはgradleが並列に複数の仕事を走らせるのを許容します.特に、
これは
Gradleの古いバージョンでは、これは十分ではありません.また、Gradleにそれが使用されている労働者の数を教えてください.さもなければ、
問題
私は、一緒に走らなければならない異なるウェブアプリから成るマルチモジュールプロジェクトを持っています.
私はその実行に気づいた
gradle :application_A:bootRun
そして、ApplicationCone Aが構築され、実行されると、gradle :application_B:bootRun
つの異なるGradleデーモンは、2つの実行がeligible for using the same daemonであるとしても産卵します.コマンドでチェックできます.
gradle --status
あなたは似たようなものを見るべきです PID STATUS INFO
23606 BUSY 3.5.1
24703 BUSY 3.5.1
(私は知っています.これは、Gradleデーモンがリソースの項で全く熱心で、異なったインスタンスを持つことが非常に目的を無視するので、大きなパフォーマンス影響を持ちます.
なぜそれが起こるのですか.
第2春アプリケーションが既存のデーモンを使用していない理由は、
bootRun
タスクが単に終了しないということです.この動作は、デーモンをBUSY
の状態に保つので、ApplicationThank Bは新しいデーモンを生成する義務があります.どうしたらいいですか.
Gradleデーモンを無効にしたくないとしたら(もちろん、問題は解決します).または、単に(例えば、IDEによって使われているTooling APIはデーモンを起動します)というわけではありません.
gradle :application_A:bootRun :application_B:bootRun
残念ながら、これは問題を解決しません.GradleはApplicationCone Aを喜んで実行しますが、終了しないまでもう一度タスクを停止します.だから、今回我々は1つだけのデーモンを持っても1つのアプリケーションを開始した🙄.そう?
後者が実際に正しいアプローチであることがわかりますが、私たちはparallel executionを有効にしなければなりません.そして、それはgradleが並列に複数の仕事を走らせるのを許容します.特に、
:application_B:bootRun
が終了していなくても、それは:application_A:bootRun
を実行します.これは
--parallel
フラグを追加するのと同じくらい簡単です.gradle :application_A:bootRun :application_B:bootRun --parallel
今、あなたは両方のアプリを見て、要求を待って実行してください😊.Gradleの古いバージョンでは、これは十分ではありません.また、Gradleにそれが使用されている労働者の数を教えてください.さもなければ、
--parallel
のフラッグでさえ、実行が連続的であるように、そうでなければ1に固執します.--max-workers
のフラグで簡単に解決できます.gradle :application_A:bootRun :application_B:bootRun --parallel --max-workers=4
Reference
この問題について(マルチモジュールスプリングプロジェクトによるGradleデーモン), 我々は、より多くの情報をここで見つけました https://dev.to/markomannux/gradle-daemon-with-multi-module-spring-project-3nogテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol