何ですか?#
- Apache Mavenはjava言語で書かれたソフトウェアプロジェクト管理および自動ビルドツールです。
何ができますか?#
プロジェクトビルドと依存関係管理#
- プロジェクトオブジェクトモデル(Project Object Model、POM)ファイルに dependency を追加することで依存関係管理を行います。
プロジェクトビルドライフサイクル内の操作実行#
- Maven のプラグインを使用して設定し、ライフサイクル目標管理を行います。
ステージ | 処理 | 説明 |
---|---|---|
クリーン clean | プロジェクトをクリーンアップ | プロジェクトの以前の JAR/WAR およびビルド情報をクリーンアップします。 |
検証 validate | プロジェクトを検証 | プロジェクトが正しいか、すべての必須情報が利用可能かを検証します。 |
コンパイル compile | コンパイルを実行 | ソースコードのコンパイルがこのステージで完了します。 |
テスト Test | テスト | 適切な単体テストフレームワーク(例:JUnit)を使用してテストを実行します。 |
パッケージ package | パッケージング | pom.xml で定義されたパッケージの JAR/WAR を作成します。 |
検証 verify | 検証 | 統合テストの結果を検証し、品質が基準を満たしていることを確認します。 |
インストール install | インストール | パッケージされたプロジェクトをローカルリポジトリにインストールし、他のプロジェクトで使用できるようにします。 |
デプロイ deploy | デプロイ | 最終的なプロジェクトパッケージをリモートリポジトリにコピーし、他の開発者やプロジェクトと共有します。 |
使い方は?#
インストールと設定#
現在、IDE はすべて Maven を統合しており、一般的に Maven をインストールする目的は、コマンドラインで Maven のライフサイクル操作を実行し、プロジェクトのコンパイルビルドを完了するためです。
ダウンロード#
公式ダウンロードリンク:http://maven.apache.org/download.cgi
C:.
│ LICENSE
│ NOTICE
│ README.txt
│
├─bin
│ m2.conf
│ mvn
│ mvn.cmd
│ mvnDebug
│ mvnDebug.cmd
│ mvnyjp
│
├─boot
│ plexus-classworlds-2.8.0.jar
│ plexus-classworlds.license
│
├─conf
│ │ settings.xml
│ │ toolchains.xml
│ │
│ └─logging
│ simplelogger.properties
│
└─lib
設定#
環境変数設定#
- 新しいシステム変数MAVEN_HOMEを追加し、値には Maven を解凍したルートディレクトリを入力します。
- 環境変数 path に新しいレコード %MAVEN_HOME%\binを追加します。
- 環境変数設定が有効であることを確認します。
cmd を開き、mvn -version と入力して Maven のバージョンが表示されれば、Maven の設定が成功したことを示します。
Maven リポジトリ設定#
- 依存関係の JAR ファイルを引き入れる必要がある場合、Maven はローカルリポジトリで検索します。ローカルリソースリポジトリはデフォルトでユーザーディレクトリの.m2 ディレクトリ内のrepositoryディレクトリにあります。
- ローカルに対応するリソースがない場合、中央リポジトリからダウンロードします。
- 中央リポジトリは海外のサーバーであるため、Aliyun のミラーを Maven 設定に追加する必要があります。
- 中央リポジトリの変更
Maven ディレクトリの conf ディレクトリ内のsettings.xmlのmirrorsタグに以下の内容を追加します:
変更後、settings.xml ファイルを.m2 ディレクトリにコピーすれば、グローバルに呼び出すことができます。
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
Tip
xml(extensible markup language 可扩展标记语言)
<要素 属性 ="属性値"> 内容 </ 要素 >
xml ではで注釈を示します。
- ローカルリポジトリの変更
<localRepository>/path/to/local/repo</localRepository>
IDEA での Maven 設定#
IDEA のFile->SettingsメニューでBuild,Execution,Deploymentメニューを見つけ、Build tools メニュー内で
Maven をクリックし、User settings fileファイルがローカルの.m2 ディレクトリ内のsettings.xmlファイルであり、リポジトリディレクトリがローカルの.m2 ディレクトリ内の repository ディレクトリであることを確認します。
使用#
依存関係の管理#
project 要素内に dependencies を追加し、dependency で依存関係を追加します。
Maven による依存関係の引き入れ:
- ローカルリポジトリから探す
- 中央リポジトリから探す
- リモートリポジトリ(自分の社内で構築したリポジトリのアドレス)
プロジェクトコンパイル環境設定#
<properties>
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
ライフサイクルの管理#
異なる Maven ビルドプラグインを使用してライフサイクルアクションを完了します。
- テストコードの実行
- プロジェクト内のテストコードの実行は、test ライフサイクルを実行することで直接完了できます。
- テストコードが書かれたプロジェクトでは、Maven がパッケージ操作を完了する際に、testディレクトリ内のテストコードも自動的に実行します。
- 特定のテストコードをカスタマイズして実行したり、他のニーズがある場合は、surefireプラグインを引き入れて設定を行います。
- pom ファイルの要素内の要素に以下のプラグインを追加します:
<!-- テストプラグインsurefire-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19</version>
<dependencies>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-junit47</artifactId>
<version>2.19</version>
</dependency>
</dependencies>
<!-- configuration要素は省略可能で、デフォルトで/src/test/java下のすべてのファイルが実行されます -->
<!-- configuration内でsrc/test/javaディレクトリ内で実行する必要があるクラスファイル名を設定できます -->
<configuration>
<!-- 単体テストの実行をスキップする場合は、skipTestsを追加 -->
<!-- <skipTests>true</skipTests>-->
<!-- 実行するテストコードを設定し、クラス名を指定します。*を使用してワイルドカードをサポートし、*TestはTestで終わるファイルを示し、正規表現もサポートします -->
<includes>
<include>ErrorLoginTest</include>
<include>MavenJunitTest</include>
</includes>
<!-- 実行しないテストクラスを設定 -->
<excludes>
<exclude>LoginSuite</exclude>
</excludes>
</configuration>
</plugin>
- 実行可能な JAR を作成する
java -jar コマンドで実行できます。
- プロジェクトを JAR としてパッケージ化するだけで、実行可能な JAR を生成する必要がない場合は、clean と package操作を順に実行するだけで済みます。
- 実行可能な JAR パッケージを作成する必要がある場合は、pom ファイルに要素を追加し、その中にプラグイン設定を追加し、assemblyプラグイン設定を追加します。以下のように:
<build>
<plugins>
<plugin>
<artifactId> maven-assembly-plugin </artifactId>
<configuration>
<!-- プロジェクト内の依存JARを使用することを示します -->
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<!-- 実行可能なJARが必要な場合 -->
<archive>
<manifest>
<!--ここに実行するクラスを記入します。 -->
<mainClass>com.testing.class12</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>