thisでmavenの並列ビルド構成について読みました。では、スレッドセーフでないすべてのプラグインを表示するにはどうすればよいでしょうか? Mavenに「plugin-not-safe-list」コマンドのようなものはありますか?
REM something like that to display all p[lugins without @threadSafe annotation
mvn help:plugin-not-safe-list
thisでmavenの並列ビルド構成について読みました。では、スレッドセーフでないすべてのプラグインを表示するにはどうすればよいでしょうか? Mavenに「plugin-not-safe-list」コマンドのようなものはありますか?
REM something like that to display all p[lugins without @threadSafe annotation
mvn help:plugin-not-safe-list
maven-enforcer-plugin のカスタム ルールを作成し、Maven プロジェクトでの実行に使用できます。
mojo-executorを使用してファイルを解析し、plugin.xml
その「スレッドセーフ」プロパティを確認することもできます。
上記をいつ、なぜ使用する必要があるかについて少し詳しく説明します。CI/CD 環境で作業していて、Maven を介して並列コンパイルを使用する場合は、CI/CD の一貫性と正確性を確保するために、開発者がスレッドセーフでないプラグインを追加していないことを常に監視する必要があります。 . これを実現するには、上記のmaven-envorcer-pluginをカスタム ルールで使用できます。カスタム ルールは、プロジェクト内のすべてのプラグインを検索するために Maven プラグイン API (maven プロジェクトなど) を使用し、次にmojo-executor lib を使用してthreadSafe
各プラグインのプロパティを読み取ることができます (maven API はそれを提供しないでください)。mojo-executor lib にはplugin.xml
、maven プラグインのファイルを解析するツールがあります。threadSafe
プロパティが存在します。見つかったら、maven ビルドを失敗させることができます。
非スレッド セーフ プラグインのリストのみを表示する場合は、同じ手法を使用して、threadSafe
プロパティが false であるプラグインのみをリストします。その後、カスタム ルール (プロジェクトのプロファイルなど) を使用するように構成し、maven-enforcer-plugin
コマンド ラインから単一の maven コマンドで実行できます。
ところで、開発プロジェクトで非スレッド セーフ プラグインを見つけ、スレッド セーフの代替手段がない場合にどうなるかは、別の問題であり、これも解決可能です。