Maven(メイヴン)
Javaプロジェクトのビルドツールです。
「プロジェクトの設計図(POM)」をもとに、以下を自動で行ってくれます。
- コンパイル
- テスト実行
- JAR/WARの作成
- 外部ライブラリの管理(依存性解決)
Mavenは「料理のレシピ本+買い物代行人」のようなもの。
「この材料(ライブラリ)を揃えて、この手順(ビルド)で料理(アプリ)を完成させて」と指示すれば、全部やってくれる。
my-app/
├── pom.xml <- 設定ファイル(プロジェクトのレシピ)
└── src/
├── main/
│ └── java/ <- 本番コード
└── test/
└── java/ <- テストコード
コマンド |
説明 |
mvn compile |
Javaソースコードをコンパイル |
mvn test |
テストを実行 |
mvn package |
JAR/WARを作成 |
mvn clean |
target ディレクトリを削除 |
mvn install |
ローカルにライブラリ登録 |
<!-- pom.xml に追記 -->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
</dependencies>
入力 |
出力 |
mvn package 実行 |
target/my-app-1.0-SNAPSHOT.jar 生成 |
特徴 |
内容 |
標準構成 |
決まったディレクトリ構成で迷わない |
POMファイル |
XML形式で依存関係や設定を管理 |
リポジトリ |
ライブラリは自動でネットから取得 |
プロジェクトの再現性 |
誰が実行しても同じ構成でビルドできる |
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>my-app</artifactId>
<version>1.0.0</version>
<dependencies>
<!-- ライブラリ定義 -->
</dependencies>
<build>
<plugins>
<!-- プラグイン設定 -->
</plugins>
</build>
</project>
🗂 Mavenのライフサイクル(Mermaid図)
graph TD
A[validate] --> B[compile]
B --> C[test]
C --> D[package]
D --> E[verify]
E --> F[install]
F --> G[deploy]
Loading
プラグイン名 |
目的 |
maven-compiler-plugin |
Javaのバージョン指定など |
maven-surefire-plugin |
テストの設定 |
maven-jar-plugin |
JAR出力設定 |
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<source>11</source>
<target>11</target>
</configuration>
</plugin>
</plugins>
</build>
種類 |
内容 |
ローカル |
PC内の ~/.m2/repository
|
セントラル |
Maven公式が提供する巨大なリポジトリ |
プライベート |
独自に用意した社内用リポジトリなど |
<profiles>
<profile>
<id>dev</id>
<properties>
<env>development</env>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<env>production</env>
</properties>
</profile>
</profiles>
実行時:
比較項目 |
Maven |
Gradle |
設定ファイル |
XML(pom.xml) |
Groovy/Kotlin(build.gradle) |
学習コスト |
低 |
やや高 |
カスタマイズ性 |
低(だが安定) |
高(柔軟だが複雑になりがち) |
MavenはJavaエンジニアにとって「デファクトスタンダード」と言えるビルドツールです。
開発初期から運用まで、構造をシンプルに保ちながら自動化を助けてくれます。
-
pom.xml
の最小構成
- JUnitの依存追加
- Javaバージョンの設定
- 環境プロファイル切替例