Maven プラグインとゴール
ビルドをカスタマイズします。
「Maven プラグインとゴール」はCoddyKit上の無料Java Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJava Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Java Academyコースには全4レッスンが含まれています。
Mavenのプラグインとゴール
Maven本体はほとんど何もしません。実際の処理はすべてプラグインが担います。プラグインはゴールを提供し、ゴールはライフサイクルのフェーズに関連付けられます。このレッスンでは、プラグインによってビルドをカスタマイズする方法を説明します。
プラグインとゴールの違い
プラグインは、関連する機能をまとめたパッケージです。ゴールは、プラグイン内の具体的な1つのタスクです。たとえばCompiler Pluginは、compileゴールとtestCompileゴールを提供します。
ゴールの座標
ゴールはplugin:goalとして直接呼び出せます。たとえばmvn compiler:compileやmvn surefire:testです。通常、ゴールはフェーズに関連付けられているため自動的に実行されます。
フェーズへのバインディング
デフォルトのパッケージングタイプでは、標準プラグインがフェーズにあらかじめ関連付けられています。jarプロジェクトでは、Compiler Pluginのcompileゴールがcompileフェーズに、Surefire Pluginのtestゴールがtestフェーズに関連付けられています。そのため、mvn testを実行するだけで動作します。
コンパイラの設定
プラグインは<build><plugins>の中で設定します。ここではJavaのリリースレベルを指定し、コンパイラが特定のバージョンを対象にするよう設定します。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.13.0</version>
<configuration>
<release>21</release>
</configuration>
</plugin>
</plugins>
</build>Surefire Plugin
Surefireはtestフェーズで単体テストを実行します。実行するテスト、並列実行、JVM引数を設定できます。兄弟プラグインのFailsafeは、verifyフェーズで統合テストを実行します。
追加の実行の関連付け
<execution>ブロックを使うと、ゴールをフェーズに明示的に関連付けられます。必要に応じて、その実行専用の設定も指定できます。コンパイル前のコード生成など、追加の処理を組み込むときに使用します。
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>print-banner</id>
<phase>generate-sources</phase>
<goals><goal>run</goal></goals>
</execution>
</executions>
</plugin>Fat JARのビルド
デフォルトのJARには依存関係が含まれません。Shadeプラグイン(またはAssemblyプラグイン)を使うと、すべてを1つの実行可能なuber-jarにまとめられます。そのゴールをpackageフェーズに関連付けます。
Exec Plugin
Execプラグインを使うと、mvn exec:javaでメインクラスを指定して、Mavenからアプリケーションを実行できます。パッケージ化せずにすぐ実行したいときに便利です。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<configuration>
<mainClass>com.example.App</mainClass>
</configuration>
</plugin>プラグイン管理
マルチモジュールビルドでは、親POMの<pluginManagement>でプラグインのバージョンと共有設定を固定できます。子モジュールはバージョンを繰り返し記述せずにプラグインを参照できるため、ビルドの一貫性を保てます。
設定の確認
mvn help:describe -Dplugin=compilerを使うと、プラグインのゴールとパラメータを一覧表示できます。ターミナルを離れずに、プラグインが提供する設定項目を知る最も早い方法です。
クイックチェック
プラグインとゴールについての理解度を確認しましょう。
まとめ
Mavenのプラグインの仕組みを学びました。
- 実際のビルド処理はすべてプラグインが担い、プラグインはゴールを提供します。
- ゴールはライフサイクルのフェーズに関連付けられているため、標準のフェーズを実行するだけで動作します。
<build><plugins>でプラグインを設定し、追加の関連付けにはexecutionを追加します。- Shade/AssemblyはFat JARをビルドし、Execはアプリを実行し、Surefire/Failsafeはテストを実行します。
mvn help:describeでプラグインのゴールとパラメータを確認できます。
よくある質問
「Maven プラグインとゴール」レッスンは無料ですか?
はい。「Maven プラグインとゴール」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Java Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Java Academyコースには全4レッスンが含まれています。
「Maven プラグインとゴール」で何を学びますか?
ビルドをカスタマイズします。 ブラウザで直接実行するハンズオンコードでJava Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Java Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのJava Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「Maven プラグインとゴール」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このJava Academyレッスンでコードを書いて実行できますか?
はい。すべてのJava Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Maven プロジェクト構成
- Maven プラグインとゴール
- Gradle の基礎
- ビルドツールの選択