Mavenプロジェクト管理ツールの概要と設定方法
Mavenはクロスプラットフォーム対応のプロジェクト管理フレームワークです。Apache Software Foundationが開発する成功したオープンソースプロジェクトとして、Javaベースのアプリケーション開発におけるプロジェクト構築、依存関係制御、プロジェクト情報管理を主な目的としています。このツールの名前は「熟練者」や「専門家」を意味し、Javaプロジェクトのビルドプロセスと依存性管理を自動化します。
Mavenの主な機能
依存関係管理
外部ライブラリの効率的な取得と管理を実現し、バージョン競合を回避します。従来のように手動でJARファイルを導入する代わりに、設定ファイルに必要な依存情報を記述するだけで、Mavenがネットワーク経由で自動的にダウンロードします。
標準化されたプロジェクト構造
統一されたディレクトリ構成を提供し、プロジェクト間の一貫性を保ちます。
プロジェクトビルド
クロスプラットフォームでの自動化ビルド処理を実現:コンパイル、テスト実行、パッケージング、デプロイなどのプロセスを迅速に完了できます。ライフサイクル管理機能を備えています。
リポジトリ管理
各種JARパッケージを保存・管理するためのストレージ機能。ローカルリポジトリ、中央リポジトリ(https://repo1.maven.org/maven2/)、プライベートリポジトリ(企業内構築のサーバー)の3種類があります。
Mavenのインストール手順
公式サイトからダウンロード
http://maven.apache.org/download.cgi
展開後の構成:
- bin: Mavenの実行コマンドを格納
- boot: クラスローダーなどの起動支援プログラムを格納
- conf: settings.xmlなどの構成ファイルを格納
- lib: Maven実行に必要なJARファイルを格納
MAVEN_HOME環境変数を設定し、Mavenのインストールディレクトリ(binの親ディレクトリ)を指定
システムのPATH変数に%MAVEN_HOME%\binを追加
mvn –versionコマンドで確認
ローカルリポジトリのパスを変更するには、Cドライブに作成されるのを防ぐため、任意の場所に新しいリポジトリフォルダを作成
<mirror> <id>aliyun-mirror</id> <mirrorOf>central</mirrorOf> <name>Alibaba Cloud Maven</name> <url>https://maven.aliyun.com/nexus/content/repositories/central/</url> </mirror>
IntelliJ IDEAとの統合
コマンドライン操作
- Webアプリケーションの作成:
mvn archetype:generate -DgroupId=net.example.project -DartifactId=webapplication -DarchetypeArtifactId=maven-archetype-webapp
このコマンドはmaven-archetype-webappテンプレートを使用してWebアプリケーションの基本構造を生成します。groupIdは組織識別子を表し、通常は逆順のドメイン名形式;artifactIdはプロジェクトの固有識別子です。この例では、webapplicationという名前のWebアプリケーションが作成され、IntelliJ IDEAにインポートして開発を進めることができます。
2. 標準Javaプロジェクトの作成:
mvn archetype:generate -DgroupId=net.example -DartifactId=sample-project -DarchetypeArtifactId=maven-archetype-quickstart
maven-archetype-quickstartはシンプルなJavaプロジェクト用のテンプレートです。Servlet APIなどのWeb技術に依存しない純粋なJavaアプリケーション向けの基本構造を生成します。このコマンドでは、groupIdがnet.example、artifactIdがsample-projectとなり、基本的なJavaプロジェクトが作成されます。
座標システムの概念
Mavenにおける座標は特定のJARファイルを識別するための仕組みです。 Mavenエコシステムには多数のアーティファクトが存在するため、各アーティファクトを一意に識別する統一規則が必要です。この規則により、検索作業を自動化できます。 Maven座標の主な構成要素(GAV) - 特定のJARのインターネット上での位置を特定
| 要素 | 説明 |
|---|---|
| **groupId** | 現在のMaven組織名を定義、通常は企業名 |
| **artifactId** | 実際のプロジェクト名を定義 |
| **version** | 現在のプロジェクトバージョンを定義 |
| **packaging** | パッケージ形式 jar:package実行時にJAR形式で出力 war:package実行時にWAR形式で出力 |
| **dependency** | <dependency>で依存関係を宣言すると、Mavenが自動的に該当パッケージをダウンロード |
| 要素 | 説明 |
|---|---|
| **dependencies** | 依存関係の集合を示す |
| **dependency** | <dependency>で依存関係を宣言すると、Mavenが自動的に該当パッケージをダウンロード |
依存パッケージの追加には座標の指定が必要ですが、多くの場合座標が不明なため、https://mvnrepository.com/ などのウェブサイトで検索できます