Maven ライフサイクル
Maven のライフサイクルは、すべての構築プロセスを抽象化して統合することです。プロジェクトのクリーニング、初期化、コンパイル、テスト、パッケージング、統合テスト、検証、展開、サイト生成など、ほぼすべての構築手順が含まれます。
Maven のライフ サイクルは抽象的です。つまり、ライフ サイクルは実際の作業を行わず、プラグインによって実際の作業が完了します。設計パターンのテンプレート メソッドと同様です。
3 つのライフサイクル
Maven には、クリーン、デフォルト、サイトという 3 つの独立したライフサイクルがあります。
1. クリーン: クリーン ライフサイクルは、実際のビルドの前にいくつかのクリーニング作業を実行します。
2. default: Default Lifecycle は、コンパイル、テスト、パッケージ化、展開などのコア部分を構築します。
3. サイト: サイト ライフサイクルは、プロジェクト レポート、サイト、およびリリース サイトを生成します。
各ライフサイクルにはいくつかのフェーズが含まれており、これらのフェーズは連続しており、後のフェーズは前のフェーズに依存し、ユーザーと Maven の間の最も直接的な対話はこれらのライフサイクルフェーズを呼び出します。
ライフ サイクル ステージの前後の依存関係と比較して、3 つのライフ サイクル自体は互いに独立しており、ユーザーはクリーン ライフ サイクルの特定のステージのみを呼び出すか、デフォルト ライフ サイクルの特定のステージのみを呼び出すことができます。その他のライフ サイクル。
クリーンなライフサイクル
次の段階を含むクリーニング ライフ サイクル:
1. 事前クリーニング: クリーニングの前に完了する必要があるいくつかの作業を実行します。
2. clean: 以前のビルドで生成されたすべてのファイルを削除します。
3. 清掃後: 清掃直後に完了する必要があるいくつかの作業を実行します。
mvn clean の clean は上記の clean です. ライフサイクルでは, 特定のステージが実行されると, それ以前のすべてのステージが実行されます. つまり, mvn clean が実行されると, 次の 2 つのライフサイクルステージが実行されます. :
pre -clean, clean
mvn post-clean を実行すると、次の 3 つのライフ サイクル フェーズが実行されます:
pre-clean、clean、post-clean
これは Maven の非常に重要なルールであり、コマンドの入力を大幅に簡素化できますライン。
デフォルトのライフサイクル
これは、アプリケーションの構築に使用される Maven の主要なライフサイクルであり、次の 23 フェーズで構成されています。
ライフサイクルステージ | 説明 |
---|---|
検証する (検証する) | プロジェクトが正しく、プロジェクトのビルド プロセスを完了するために必要なすべての情報が含まれていることを確認します。 |
初期化(初期化) | プロパティ値の設定など、ビルド状態を初期化します。 |
generate-sources (ソースコードの生成) | コンパイル フェーズに含まれるソース コードを生成します。 |
プロセスソース (プロセスソースコード) | たとえば、ソース コードを処理し、任意の値をフィルター処理します。 |
generate-resources (リソース ファイルの生成) | プロジェクト バンドルに含まれるリソース ファイルを生成します。 |
process-resources (プロセス リソース ファイル) | リソースをターゲット ディレクトリにコピーして処理します。これは、パッケージ化フェーズに最適な準備です。 |
コンパイル(コンパイル) | プロジェクトのソース コードをコンパイルします。 |
process-classes (処理クラス ファイル) | Java クラス ファイルのバイトコードの改善と最適化など、コンパイルによって生成されたファイルを処理します。 |
generate-test-sources (テスト ソース コードの生成) | コンパイル フェーズに含まれるテスト ソース コードを生成します。 |
process-test-sources (プロセス テスト ソース) | たとえば、テスト ソース コードを処理して、任意の値をフィルタリングします。 |
generate-test-resources (テスト リソース ファイルの生成) | テスト用のリソース ファイルを作成します。 |
process-test-resources (プロセス テスト リソース ファイル) | テスト リソースをターゲット ディレクトリにコピーして処理します。 |
test-compile (テスト ソース コードのコンパイル) | テスト ソース コードをテスト ターゲット ディレクトリにコンパイルします。 |
process-test-classes (プロセス テスト クラス ファイル) | テスト ソース コードをコンパイルして生成されたファイルを処理します。 |
テスト (テスト) | 適切な単体テスト フレームワークを使用してテストを実行します (Juint はその 1 つです)。 |
prepare-package (パッケージの準備) | 実際の梱包の前に、必要な操作を行って梱包の準備を行います。 |
パッケージ | コンパイルされたコードを、JAR、WAR、または EAR ファイルなどの配布可能な形式のファイルにパッケージ化します。 |
pre-integration-test (統合テスト前) | 統合テストを実行する前に、必要なアクションを実行します。たとえば、必要な環境を構築します。 |
統合テスト (統合テスト) | プロジェクトを処理し、統合テストを実行できる環境にデプロイします。 |
post-integration-test (統合テスト後) | 統合テストの実行が完了したら、必要なアクションを実行します。たとえば、統合テスト環境をクリーンアップします。 |
確認する (確認する) | 任意のチェックを実行して、プロジェクト パッケージが有効であり、品質基準を満たしていることを確認します。 |
インストール | プロジェクト パッケージをローカル リポジトリにインストールして、プロジェクト パッケージを他のローカル プロジェクトの依存関係として使用できるようにします。 |
配備 | 最終的なプロジェクト パッケージをリモート リポジトリにコピーして、他の開発者やプロジェクトと共有します。 |
重要な段階は次のとおりです。
ステージ | 対処する | 説明 |
---|---|---|
検証する | 検証プロジェクト | プロジェクトが正しいこと、およびすべての必要な関連リソースが利用可能であることを確認します。これには、pom.xml ファイル ツリーの検証が含まれます。 |
コンパイル コンパイル | コンパイルを実行 | ソースコードのコンパイルはこの段階で行われます。 |
テスト テスト | テスト | JUnit などの適切な単体テスト フレームワークを使用してテストを実行します。これらのテストでは、パッケージ化と展開は必要ありません。 |
包装パッケージ | パック | pom.xml に記載されているパッケージで定義されているように、JAR/WAR パッケージを作成します。 |
確認する | 診る | パッケージが有効で、品質基準を満たしていることを確認するために、すべてのチェックが実行されます。 |
インストール インストール | インストール | 他のプロジェクトで使用するために、パッケージ化されたプロジェクトをローカル リポジトリにインストールします。 |
展開する | 配備 | 最終的なプロジェクト パッケージをリモート ウェアハウスにコピーして、他の開発者やプロジェクトと共有します。 |
任意のステージを実行すると、その前のすべてのステージが実行されます。これが、mvn install を実行すると、コードがコンパイル、テスト、およびパッケージ化される理由です。さらに、Maven のプラグイン メカニズムは Maven のライフ サイクルに完全に依存しているため、ライフ サイクルを理解することは非常に重要です。
実験:
Maven Java プロジェクトを jar パッケージにパッケージ化し、それを別の Maven プロジェクトにインポートします。
1. Maven Java プロジェクトで install を実行すると、Maven Java が jar パッケージにパッケージ化され、ローカル ウェアハウスにインストールされます。
2. プロジェクト座標を通じて、ローカル倉庫にインストールされている jar をインポートします。
知らせ:
両方のプロジェクトがプロジェクト レベルにあり、相互に依存する場合は、パッケージ化後に依存関係を介してインポートする必要があります。ただし、2 つのプロジェクトのモジュール レベルを直接インポートできる場合は、後で説明します。
2 つのライフサイクル フェーズを同時に実行します。
mvn クリーン インストール
Maven は最初に clean コマンドを実行し、次に install コマンドを実行します。
サイトのライフサイクル
サイト ライフ サイクルの目的は、プロジェクト サイトを構築して公開することです. Maven は、POM に含まれる情報に基づいてフレンドリーなサイトを自動的に生成できます。これは、チームがプロジェクト情報を伝達および公開するのに便利です. ライフ サイクルには、次のフェーズが含まれます
。
2. サイト: プロジェクトのサイト ドキュメントを生成します。
3. サイト後: サイト ドキュメントが生成された後に実行する必要があるいくつかの作業を実行し、展開の準備をします。
4. site-deploy: 生成されたサイト ドキュメントを特定のサーバーにデプロイします。