112-java-maven-plugins について
Java プロジェクトの pom.xml で Maven プラグインやプロファイルを設定する対話型スキルです。質問に沿って追加内容を選び、変更前に既存設定とプロジェクトの状態を確認し、現在の設定を維持します。
主な機能
- 01Maven プラグインとプロファイルの設定
- 02テスト、フォーマット、安全性分析への対応
- 03順序立てた質問による設定選択
- 04変更前の検証と既存設定の確認
- 05既存設定の削除や重複追加の回避
活用シーン
- 01Java プロジェクトへのビルドプラグイン追加
- 02カバレッジや安全性チェックの設定
- 03Maven プラグインのバージョンや実行設定の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ jabrena/ plinth --skill 112-java-maven-pluginsインストール後、Claude Code で/112-java-maven-pluginsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/112-java-maven-plugins-git-commit-id-maven-plugin.md112-java-maven-plugins-maven-surefire-plugin.md112-java-maven-plugins-maven-failsafe-plugin.md112-java-maven-plugins-maven-enforcer-plugin.md112-java-maven-plugins-maven-jxr-plugin.md112-java-maven-plugins-flatten-maven-plugin.md112-java-maven-plugins-maven-compiler-plugin.md112-java-maven-plugins-maven-dependency-plugin.md112-java-maven-plugins-jib-maven-plugin.md112-java-maven-plugins-maven-surefire-report-plugin.md112-java-maven-plugins-profile-cyclomatic-complexity.md112-java-maven-plugins-spotless-maven-plugin.md112-java-maven-plugins-profile-sonar.md112-java-maven-plugins-profile-jacoco.md112-java-maven-plugins-profile-security.md112-java-maven-plugins-profile-static-analysis.md112-java-maven-plugins-versions-maven-plugin.md112-java-maven-plugins-profile-jmh.md112-java-maven-plugins-profile-pitest.md詳細
Maven プラグイン:pom.xml の設定に関するベストプラクティス
既存の設定を維持しながら、構造化された質問形式のプロセスで pom.xml の Maven プラグインとプロファイルを設定します。これは対話型のスキルです。
このスキルで扱う内容
Maven プラグイン:
- Maven Compiler
- Maven Enforcer
- Maven Surefire
- Maven Failsafe
- HTML テストレポート(Surefire Report、JXR)
- Maven Spotless
- Maven Flatten
- Maven Versions
- Maven Git Commit ID
- Maven Jib
Maven プロファイル:
- JaCoCo(コードカバレッジ)
- PiTest(ミューテーションテスト)
- Security(OWASP 依存関係チェック)
- 静的解析(SpotBugs、PMD)
- SonarQube/SonarCloud
- JMH(Java Microbenchmark Harness)
- 循環的複雑度
制約事項
プラグインの推奨事項を適用する前に、プロジェクトが有効な状態であることを確認してください。既存の設定を維持し、ユーザーが選択したものだけを追加する、構造化された質問形式のプロセスを使用してください。
- 必須:プラグインの推奨事項を適用する前に、
./mvnw validateまたはmvn validateを実行してください - 安全性:検証に失敗した場合は停止し、問題の修正をユーザーに依頼してください。解決するまで先に進まないでください
- 範囲:変更を加える前に、ステップ 1(既存設定の分析)から開始してください。既存のプラグインを削除または置き換えてはいけません。競合しない新しいプラグインのみ追加してください
- プラグインのリファレンスを読む前に:まずこの SKILL.md に含まれる質問フローを実行してください。質問は順番どおりに一つずつ行い、選択されたすべてのプラグイン/プロファイルと条件付きの値を記録してから、ユーザーの回答で選択された実装リファレンスのみを読んでください
このスキルを使用する場合
- pom.xml に Maven プラグインを追加する
- pom.xml の Maven プラグインを改善する
- pom.xml に Maven 品質プラグインを設定する
- Java の検証用に Maven ビルドライフサイクルプラグインを追加する
- Maven プラグインのバージョンと実行を確認する
ワークフロー
- プラグインを変更する前にプロジェクトを検証する
./mvnw validate または mvn validate を実行し、検証に失敗した場合は停止してください。
- 現在のプラグインとプロファイルの設定を分析する
pom.xml に変更を加える前に:
-
<build><plugins>、<build><pluginManagement>、<reporting><plugins>にある既存のプラグインを確認します。 -
<properties>にある既存のプロパティを確認します。 -
<profiles>にある既存のプロファイルを確認します。 -
既存の設定と追加候補の間に競合がないか特定します。
-
既存のプラグイン、プロパティ、プロファイルをすべて維持します。
-
既存のプラグイン、プロパティ、レポートエントリ、サポートファイル、プロファイルを改善する前に、ユーザーに確認します。
-
ユーザーが明示的に改善を求めない限り、重複する追加はスキップします。
-
プラグインを変更する前に Maven Wrapper を確認する
プロジェクトのルートに Maven Wrapper のファイルがあるか確認します:
mvnwとmvnw.cmd.mvn/wrapper/maven-wrapper.properties
Maven Wrapper が存在しない場合は停止し、次のように尋ねます:
「このプロジェクトには Maven Wrapper が設定されていないようです。Maven Wrapper を使うと、全員が同じ Maven バージョンを使用できるため、異なる環境間でのビルドの一貫性が向上します。インストールしますか?(y/n)」
ほかの質問をする前に、ユーザーの回答を待ってください。ユーザーが「y」と答えた場合は、インストールします:
mvn wrapper:wrapper
- リファレンスを読む前に Maven プラグインの評価に関する質問をする
プラグイン/プロファイルの実装リファレンスを読む前に、XML に含まれるこの質問フローを実行してください。質問は一度に一つずつ行い、ユーザーの回答を待ってから、続行する前に選択されたプラグイン、プロファイル、条件付きの値を記録してください。
質問 1:これはどの種類の Java プロジェクトですか?
選択肢:
- Java ライブラリ(Maven Central/Nexus への公開用)
- Java CLI アプリケーション(コマンドラインツール)
- Java マイクロサービス(Web サービス/REST API/モジュラーモノリス)
- サーバーレス(AWS Lambda、Azure Functions)
- Java POC(概念実証)
- その他(詳細を指定)
質問 2:プロジェクトの対象 Java バージョンは何ですか?
選択肢:
- Java 17(LTS — 新規プロジェクトに推奨)
- Java 21(LTS — 最新の LTS バージョン)
- Java 25(LTS — 最新の LTS バージョン)
- その他(バージョンを指定)
質問 3:プロジェクトにとって重要なビルドと品質の項目は何ですか?
選択肢:
- ソースコードのフォーマット(Spotless)
- Maven Enforcer
- 単体テスト(Surefire)
- 単体テストレポート(Surefire Reports)
- 統合テスト(Failsafe)
- コードカバレッジのレポート(JaCoCo)
- ミューテーションテスト(PiTest)
- セキュリティ脆弱性スキャン(OWASP)
- セキュリティ静的コード解析(SpotBugs、PMD)
- Sonar
- 依存関係の解析(maven-dependency-plugin)
- バージョン管理
- コンテナーイメージのビルド(Jib)
- JMH(Java Microbenchmark Harness)
- Maven Compiler
- 循環的複雑度
注:「循環的複雑度」を選択すると、ステップ 20 で PMD ルールセットファイルとプロファイルが作成されます。ルールセットの場所はプロジェクト構造によって異なります。src/main/pmd/pmd-cyclomatic-complexity.xml(単一モジュール)または pmd/pmd-cyclomatic-complexity.xml(複数モジュール)です。
質問 3.1(条件付き):Jib で使用するコンテナーイメージの対象は何ですか?
注:この質問は、質問 3 で「コンテナーイメージのビルド(Jib)」を選択した場合にのみ表示されます。
- 形式の例:
gcr.io/my-project/my-app、docker.io/username/myimage、またはローカル Docker の場合はmyimage - イメージ名は、Jib プラグインの
<to><image>設定で使用されます。
質問 4:目標とするカバレッジのしきい値は何%ですか?
選択肢:
- 70%(中程度)
- 80%(推奨)
- 90%(高)
- カスタムの割合(指定)
注:この質問は、質問 3 で「コードカバレッジのレポート(JaCoCo)」を選択した場合にのみ表示されます。
質問 5:Sonar/SonarCloud との連携を設定しますか?**(y/n)
注:この質問は、質問 3 で「静的コード解析(SpotBugs、Sonar)」を選択した場合にのみ表示されます。
「はい」の場合は、次の情報を入力してください:
質問 5.1:Sonar の組織識別子は何ですか?
- SonarCloud の場合:通常は GitHub のユーザー名または組織名です。
- SonarQube の場合:SonarQube で設定されている組織キーです。
- 例:
my-github-userまたはmy-company-org
質問 5.2:Sonar のプロジェクトキーは何ですか?
- SonarCloud の場合:通常は
GITHUB_USER_REPOSITORY_NAME形式です(例:john-doe_my-java-project)。 - SonarQube の場合:SonarQube インスタンスで定義したカスタムのプロジェクトキーです。
- Sonar 組織内で一意である必要があります。
- 例:
john-doe_awesome-java-lib
質問 5.3:Sonar のプロジェクト表示名は何ですか?
- Sonar ダッシュボードに表示される、プロジェクトの人が読みやすい名前です。
- スペースや特殊文字を含めることができます。
- 例:
Awesome Java LibraryまたはMy Microservice API
質問 5.4:どの Sonar サービスを使用していますか?(条件付き)
注:この質問は、質問 5 で Sonar の設定を有効にした場合にのみ表示されます。
選択肢:
- SonarCloud(https://sonarcloud.io)— オープンソースプロジェクトに推奨
- SonarQube Server(サーバー URL を指定)
SonarQube Server の場合:SonarQube サーバーの URL を入力してください(例:https://sonar.mycompany.com)。
該当するすべての質問に回答したら、選択内容を確認し、参照先に対応付けます:
- Maven Compiler を選択した場合は、
references/112-java-maven-plugins-maven-compiler-plugin.mdを読んでください。 - Maven Enforcer を選択した場合は、
references/112-java-maven-plugins-maven-enforcer-plugin.mdを読んでください。 - Unit Testing (Surefire) を選択した場合は、
references/112-java-maven-plugins-maven-surefire-plugin.mdを読んでください。 - Integration testing (Failsafe) を選択した場合は、
references/112-java-maven-plugins-maven-failsafe-plugin.mdを読んでください。 - Unit Testing Reports (Surefire Reports) を選択した場合は、
references/112-java-maven-plugins-maven-surefire-report-plugin.mdとreferences/112-java-maven-plugins-maven-jxr-plugin.mdを読んでください。 - Format source code (Spotless) を選択した場合は、
references/112-java-maven-plugins-spotless-maven-plugin.mdを読んでください。 - Version management を選択した場合は、
references/112-java-maven-plugins-versions-maven-plugin.mdを読んでください。 - build information tracking を選択した場合は、
references/112-java-maven-plugins-git-commit-id-maven-plugin.mdを読んでください。 - プロジェクトが Java Library の場合は、
references/112-java-maven-plugins-flatten-maven-plugin.mdを読んでください。 - Container image build (Jib) を選択した場合は、
references/112-java-maven-plugins-jib-maven-plugin.mdを読んでください。 - Dependency analysis を選択した場合は、
references/112-java-maven-plugins-maven-dependency-plugin.mdを読んでください。 - Code coverage reporting (JaCoCo) を選択した場合は、
references/112-java-maven-plugins-profile-jacoco.mdを読んでください。 - Mutation testing (PiTest) を選択した場合は、
references/112-java-maven-plugins-profile-pitest.mdを読んでください。 - Security vulnerability scanning (OWASP) を選択した場合は、
references/112-java-maven-plugins-profile-security.mdを読んでください。 - Security static code analysis (SpotBugs, PMD) を選択した場合は、
references/112-java-maven-plugins-profile-static-analysis.mdを読んでください。 - Sonar を選択した場合は、
references/112-java-maven-plugins-profile-sonar.mdを読んでください。 - JMH を選択した場合は、
references/112-java-maven-plugins-profile-jmh.mdを読んでください。 - Cyclomatic Complexity を選択した場合は、
references/112-java-maven-plugins-profile-cyclomatic-complexity.mdを読んでください。 - 選択されていないプラグイン/プロファイルのリファレンスは読んだり適用したりしないでください。
- 選択したリファレンスを読み、選択した設定のみを追加する
既存のプラグインやプロファイルを削除せずに、選択したプラグインとプロファイルを追加し、プロジェクト構造と互換性を維持してください。選択したリファレンスで必要とされる Maven プロパティ、プラグイン設定、プロファイル設定、レポートプラグイン、およびサポートファイルのみを追加してください。
- 適用したプラグイン設定を要約する
追加したプラグイン/プロファイル、その根拠、および推奨されるフォローアップコマンドやチェックを報告してください。
リファレンス
詳しいガイダンス、例、制約については、以下を参照してください。
- references/112-java-maven-plugins-maven-compiler-plugin.md
- references/112-java-maven-plugins-maven-enforcer-plugin.md
- references/112-java-maven-plugins-maven-surefire-plugin.md
- references/112-java-maven-plugins-maven-failsafe-plugin.md
- references/112-java-maven-plugins-maven-surefire-report-plugin.md
- references/112-java-maven-plugins-maven-jxr-plugin.md
- references/112-java-maven-plugins-spotless-maven-plugin.md
- references/112-java-maven-plugins-flatten-maven-plugin.md
- references/112-java-maven-plugins-versions-maven-plugin.md
- references/112-java-maven-plugins-git-commit-id-maven-plugin.md
- references/112-java-maven-plugins-jib-maven-plugin.md
- references/112-java-maven-plugins-maven-dependency-plugin.md
- references/112-java-maven-plugins-profile-jacoco.md
- references/112-java-maven-plugins-profile-pitest.md
- references/112-java-maven-plugins-profile-security.md
- references/112-java-maven-plugins-profile-static-analysis.md
- references/112-java-maven-plugins-profile-sonar.md
- references/112-java-maven-plugins-profile-jmh.md
- references/112-java-maven-plugins-profile-cyclomatic-complexity.md