初心者向けのエキサイティングなMavenマルチモジュールプロジェクトのアイデアとトピックトップ5[2022]
公開: 2021-05-27プロジェクトがより複雑で階層化されるにつれて、プロジェクトを管理する正しい方法は、プロジェクトを異なるモジュールに分割することです。 Mavenでは、これらの複数のプロジェクトを依存関係としてリンクすることは可能ですが、ビルドプロセスがはるかに複雑になります。 したがって、推奨されるアプローチは、プロジェクトをマルチモジュラープロジェクトとして構造化し、残りをMavenに渡すことです。
目次
Mavenでマルチモジュールを使用する利点
依存性注入やその他の手順の代わりにマルチモジュールを使用することの重要な利点は、重複が減ることです。 これをよりよく理解するために、2つのモジュール(たとえば、バックエンドモジュールとフロントエンドモジュール)で構成されるアプリケーションで作業しているとします。
これらのモジュールの両方で作業し、両方のモジュールに影響する特定の機能を変更する場合は、専用のビルドツールを使用せずに、モジュールまたはコンポーネントの両方を個別にビルドする必要があります。 または、コードをコンパイルしてテストを実行し、最終結果を表示するスクリプトを作成する必要があります。
現在、複雑さがさらに増し、プロジェクトに3つ以上のモジュールがある場合、専用のビルドツールなしでこのタスクを実行することは次第に難しくなります。 さらに、実際の問題では、ビルドライフサイクル全体で重要な操作を実行したり、依存関係を共有したり、他のBOMプロジェクトを含めたりするために、プロジェクトでMavenプラグインが必要になる場合があります。
これらの課題の結果として、Mavenのマルチモジュールは非常に役立ち、単一のコマンドラインでアプリケーションのモジュールを構築できます。 また、複数のモジュール間で大量のデータと構成をシームレスに共有することもできます。
また読む:Mavenインタビューの質問回答
Mavenのマルチモジュールプロジェクトに関して知っておくべき重要な用語
1.親POM(プロジェクトオブジェクトモジュール)
Mavenの各pom.xmlファイル(継承をサポートするため)には、スーパーPOMと呼ばれる親POMがあります。 これはMavenバイナリに配置でき、2つのファイルをマージしてEffectivePOMを作成することもできます。
したがって、プロジェクトの親として機能する独自のpom.xmlファイルを作成できます。 それが済んだら、すべての依存関係と構成を追加し、それを子モジュールの親として設定し、継承を有効にすることができます。 継承を除いて、Mavenは集約も提供します。 集約機能を活用する親POMは、集約POMと呼ばれます。この種のPOMは、pom.xmlファイルで子モジュールを明示的に宣言します。
2.サブモジュール
サブプロジェクトは、サブモジュールとも呼ばれ、親POMから継承する標準のMavenモジュールとして理解できます。 継承を使用して、モジュールはさまざまな依存関係と構成を共有します。 ただし、プロジェクトをすばやくビルドする必要がある場合は、親POMでサブモジュールを明示的に宣言して、それを集約POMにする必要があります。
3.シンプルなマルチモジュールプロジェクト
Appとutilは、The SimpleMulti-ModuleProjectに含まれている2つのモジュールです。 Apache Commons Langライブラリを使用してさまざまな文字列を結合または追加する静的メソッドを提供するにはutilモジュールが必要であり、utilモジュールを呼び出すにはappモジュールが必要です。 app.javaファイルのスニペットは次のとおりです。
simple-multi / app / src / main / java / app / App.java
パブリッククラスアプリ{
public static void main(String [] args){
System.out.println(new App()。greet( "World!"));
}
public String greet(String name){
Util.join( "Hello"、name);を返します。
}
}
プロジェクトをビルドするには、
$ cd simple-multi
$mvnクリーンテスト
Mavenのコードビルダーは、プロジェクトの両方のモジュールを正しい順序でビルドし、必要なテストを実行して、以下のようなわかりやすい要約形式で結果を出力します。
4.マルチモジュールプロジェクトの構造
単純なマルチモジュールプロジェクトのレイアウトは次のとおりです。
simple-multiディレクトリはルートディレクトリであり、プロジェクト全体の最上部にあります。 最上位のPOM(親POM)が含まれていますが、この親POMにはソースフォルダーがありません。
トップレベルのディレクトリには、appとutilも含まれています。これらは、ディレクトリとpom.xmlファイルを持つ通常のMavenプロジェクトです。
トップレベルのPOMとモジュールのPOMは、通常のPOMとは少し異なります。 それらに含まれるものについて詳しく見てみましょう。
5.トップレベルのPOM
親POMまたはトップレベルPOMは、ルートディレクトリのMavenマルチモジュールプロジェクトに必要です。
トップレベルのPOMは、通常のプロジェクトと同様に、artifactID、バージョン、groupIDなどの重要な側面とプロジェクト座標を定義します。 ただし、このためのパッケージタイプは、通常の戦争またはjar形式ではなく、pomです。 これは、最上位モジュールにそれ以上のソースディレクトリが含まれていないためです。 modules / module要素は、appモジュールとutilモジュールを追加します。
このファイルの内容は次のとおりです。
simple-multi / pom.xml
<project xmlns =” http://maven.apache.org/POM/4.0.0” xmlns:xsi =” http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation =” http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>
<modelVersion> 4.0.0 </ modelVersion>
<groupId> org.codetab </ groupId>
<artifactId> simple-multi </ ArtifactId>
<バージョン>1.0</ version>
<packaging> pom </ packages>
<モジュール>
<module> app </ module>
<module> util </ module>
</ modules>
</プロジェクト>
要約すると、トップレベルのPOMはpomパッケージタイプを指定し、すべてのサブモジュールを明示的にリストします。
MavenはReactorを使用してリストされたモジュールを正しく順序付けするため、親POMでサブモジュールを宣言するときに順序付けについて心配する必要がないことに注意してください。 simple-multiでは、アプリはutilに依存しているため、mavenはutilモジュールをビルドしてからappをビルドします。
5.モジュールPOM
Module POMフォルダーには、通常のソースフォルダーと独自のpom.xmlファイルが含まれています。 このutil/pom.xmlの内容は次のとおりです。
util / pom.xml
<project xmlns =” http://maven.apache.org/POM/4.0.0” xmlns:xsi =” http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation =” http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>
<modelVersion> 4.0.0 </ modelVersion>
<親>
<groupId> org.codetab </ groupId>
<artifactId> simple-multi </ ArtifactId>
<バージョン>1.0</ version>
</ parent>
<artifactId> util </ ArtifactId>
<プロパティ>
<project.build.sourceEncoding> UTF-8 </project.build.sourceEncoding>
<maven.compiler.source> 1.8 </ maven.compiler.source>
<maven.compiler.target> 1.8 </ maven.compiler.target>
</プロパティ>
<依存関係>
<依存関係>
<groupId> org.apache.commons </ groupId>
<artifactId> commons-lang3 </ ArtifactId>
<バージョン>3.6</バージョン>
</依存関係>
<依存関係>
<groupId> junit </ groupId>
<artifactId> junit </ ArtifactId>
<バージョン>4.12</バージョン>
<scope>テスト</scope>
</依存関係>
</依存関係>
</プロジェクト>
親から継承されるため、モジュールのgroupIDとバージョンを指定する必要はありません。 依存関係/依存関係ブロックは、utilモジュール(commons-lang3およびJUnit)の依存関係を定義します。
次に、以下に示す依存関係ブロックを除いて、util/pom.xmlと非常によく似たapp/pom.xmlを見てみましょう。
app / pom.xml
…。
<依存関係>
<依存関係>
<groupId> org.codetab </ groupId>
<artifactId> util </ ArtifactId>
<バージョン>1.0</ version>
</依存関係>
…。
</依存関係>
appモジュールはutilモジュールのメソッドを使用します。このため、app/pom.xmlはutilを依存関係として指定します。
上で説明したすべてのことを要約すると:
トップレベルプロジェクト(親プロジェクト)、
- すべての座標とサブモジュールを指定するトップレベルのpom.xmlを定義し、パッケージタイプをpomとして設定します。
- その他のモジュールフォルダが含まれています。
- ソースフォルダは含まれていません。
各モジュールフォルダーは、通常のMavenプロジェクトディレクトリに他なりません。 ただし、pom.xmlファイルには次のものが含まれています。
- 親要素は、モジュールの親を指定します。
- モジュール座標はartifactID要素で指定されます。 GroupIDとバージョンは、親座標から継承されるため、言及されていません。
- あるモジュールが別のモジュールに依存している場合、依存関係は依存関係/依存関係要素に記載されています。
マルチモジュールプロジェクトの実行
$ mvn clean packageコマンドを使用して、マルチモジュールをコンパイル、テスト、およびパッケージ化できます。 ただし、maven-exec-pluginで実行するには、次の手順が必要です。
次のコマンドを実行します。
$ cd simple-multi
$mvnクリーンインストール
$ mvn exec:java -pl app -Dexec.mainClass = app.App
installコマンドは、モジュールをローカルリポジトリにインストールし、そこでプロジェクトを実行できます。 オプション-plappは、execプラグインにアプリモジュールについて通知し、そのクラスapp.Appを実行します。 インストールしないと、Mavenはutilモジュールの依存関係をダウンロードして解決できないため、ビルドプロセスは失敗します。
ただし、特に開発フェーズでは、実行する前に毎回ローカルリポジトリにプロジェクトをインストールするのは非常に面倒です。 これを簡単にするために、インストール手順を実行せずに、EclipseIDEでマルチモジュールを直接実行できます。
世界のトップ大学からオンラインでソフトウェア開発コースを学びましょう。 エグゼクティブPGプログラム、高度な証明書プログラム、または修士プログラムを取得して、キャリアを早急に進めましょう。
結論
この記事がMavenマルチモジュールプロセスの開始に役立つことを願っています。 何か新しいものと同じように、それはちょうどそれの最初のこつを取得することです。 基本的な構造と機能を理解すると、Mavenで複数のモジュールをシームレスに管理できるようになります。
フルスタックソフトウェア開発の詳細に興味がある場合は、upGrad&IIIT-Bのソフトウェア開発のエグゼクティブPGプログラム–フルスタック開発の専門分野をチェックしてください。これは、働く専門家向けに設計されており、500時間以上の厳格なトレーニングを提供します。9 +プロジェクト、割り当て、IIIT-B卒業生のステータス、実践的な実践的なキャップストーンプロジェクト、トップ企業との仕事の支援。
マルチモジュールプロジェクトとは何ですか?
マルチモジュールを使用すると、プロジェクトのビルドとデプロイに必要なモジュールの数を減らすために、一般的なアーティファクトを1つのモジュールにグループ化できます。 マルチモジュールプロジェクトは、これらのモジュール間の親子関係を定義することにより、2つ以上のモジュールから構築できます。 マルチモジュールプロジェクトの親モジュールは、ルートモジュールと呼ばれます。 マルチモジュールプロジェクトの子モジュールは、サブモジュールと呼ばれます。 ルートモジュールは、マルチモジュールビルドの基礎です。 子モジュールは単独でビルドすることはできません。ルートモジュールと一緒にビルドする必要があります。
Mavenのプロジェクトオブジェクトモデルファイルとは何ですか?
プロジェクトオブジェクトモデル(POM)ファイルは、プロジェクトを説明するファイルです。 これは、開発者がアーティファクトをリポジトリに公開するための基本的な作業単位です。 プロジェクトオブジェクトモデルは、プロジェクトを定義し、そのコンポーネントを一覧表示し、それらの機能を定義する単純なテキストファイルです。 プロジェクトオブジェクトモデルは、Mavenソフトウェアプロジェクト管理フレームワークの重要なコンポーネントです。 これは、Mavenプロジェクトを構成する特殊なタイプのXMLドキュメントです。 pomファイルは、プロジェクトの説明と考えることができます。 これは、プロジェクトの内容と、プロジェクト内の各モジュールの説明、それらの依存関係、およびバージョンをMavenに通知します。 モジュールは、Mavenプロジェクトの構成要素です。 モジュールとその依存関係は、最終的なプロジェクトを構築するために使用されます。
Mavenマルチモジュールプロジェクトを作成するにはどうすればよいですか?
mavenマルチモジュールプロジェクトを作成するには、親pomを定義し、すべてのサブモジュールがそれを継承していることを確認する必要があります。 また、すべてのサブモジュールを単一のリポジトリに配置し、親pomがそれを指すようにすることもできることに注意することも重要です。 Mavenマルチモジュールプロジェクトは、親pomと1つ以上のサブモジュールで構成されます。 親pomは、アーティファクトID、バージョン、パッケージング、依存関係などのマルチモジュールMavenプロジェクトメタデータを定義できます。 サブモジュールは親のメタデータを継承でき、親pomはプロジェクトの組織や説明などの高レベルのプロジェクト構成を定義できます。