ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
Maven とは
Apache Maven は、Java プロジェクト向けのビルド管理・依存管理・プロジェクト管理を統合的に行うツールです。2004 年に Apache Software Foundation のトッププロジェクトとなって以降、Java エコシステムの事実上の標準として君臨してきました。pom.xml という XML ファイルでプロジェクトを宣言的に記述し、Maven Central という巨大な公開リポジトリからライブラリを自動取得する仕組みが革命的でした。
| 項目 | 内容 |
|---|---|
| 初回リリース | 2004 年 |
| 開発元 | Apache Software Foundation |
| ライセンス | Apache License 2.0 |
| 最新バージョン (2025) | Maven 3.9.x / 4.0.x |
| 主な対象言語 | Java (Kotlin / Scala / Groovy も可) |
| 競合 | Gradle / sbt / Ant + Ivy |
pom.xml の基本構造
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<!-- プロジェクト座標 (GAV) -->
<groupId>com.example</groupId>
<artifactId>my-app</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>jar</packaging>
<!-- プロパティ -->
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<!-- 依存ライブラリ -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.10.0</version>
<scope>test</scope>
</dependency>
</dependencies>
<!-- ビルド設定 -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
ライフサイクルとフェーズ
Maven の標準ライフサイクルには 3 種類あります。最重要は default ライフサイクル:
| フェーズ | 説明 |
|---|---|
validate | プロジェクトが正しいか検証 |
compile | ソースコードをコンパイル |
test | ユニットテスト実行 (Surefire) |
package | jar / war にパッケージング |
verify | 結合テスト (Failsafe) |
install | ローカルリポジトリ (~/.m2) に配置 |
deploy | リモートリポジトリに公開 |
その他のライフサイクル:
- clean —
target/ディレクトリを削除 - site — プロジェクトサイト (HTML) を生成
主要コマンド
# クリーン + ビルド + ローカルインストール (定番)
mvn clean install
# テスト省略してパッケージング
mvn clean package -DskipTests
# 特定モジュールのみビルド
mvn -pl module-name install
# 依存ツリーを表示
mvn dependency:tree
# 未使用依存を検出
mvn dependency:analyze
# プロジェクト情報サイト生成
mvn site
# Maven バージョン確認
mvn -v
# 並列ビルド (高速化)
mvn -T 4 clean install # 4 スレッド
mvn -T 1C clean install # CPU コア数 x1
# オフラインモード
mvn -o package
依存管理 (Dependency)
Maven の核心は推移的依存解決です。Spring Boot Web を入れるだけで、内部で必要な Tomcat / Jackson / Validation など 30 以上のライブラリが自動で揃います:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>3.2.0</version>
<scope>compile</scope> <!-- ★ scope -->
<optional>false</optional>
</dependency>
scope の種類
| scope | コンパイル | テスト | 実行時 | パッケージ含む |
|---|---|---|---|---|
compile (既定) | O | O | O | O |
provided | O | O | O | X |
runtime | X | O | O | O |
test | X | O | X | X |
system | O | O | O | X |
Maven Central Repository
世界最大の Java ライブラリリポジトリ。座標 groupId:artifactId:version で一意に識別されます。検索は search.maven.org や mvnrepository.com で行います。
ローカルリポジトリ: ~/.m2/repository/
リモート (公式) : https://repo.maven.apache.org/maven2/
ミラー候補 : Maven Central の各種ミラー
検索:
https://mvnrepository.com ← 一番便利
https://search.maven.org
例:
org.springframework.boot:spring-boot-starter-web:3.2.0
→ ~/.m2/repository/org/springframework/boot/spring-boot-starter-web/3.2.0/
settings.xml と認証
ユーザレベル設定は ~/.m2/settings.xml に書きます。社内 Nexus / Artifactory への接続情報など:
<settings>
<servers>
<server>
<id>nexus-snapshots</id>
<username>deploy</username>
<password>${env.MAVEN_PASSWORD}</password>
</server>
</servers>
<mirrors>
<mirror>
<id>internal-nexus</id>
<mirrorOf>central</mirrorOf>
<url>https://nexus.company.com/repository/maven-public/</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>internal</id>
<repositories>
<repository>
<id>internal-releases</id>
<url>https://nexus.company.com/repository/maven-releases/</url>
</repository>
</repositories>
</profile>
</profiles>
</settings>
マルチモジュールプロジェクト
大規模プロジェクトでは親 POM + 複数子モジュール構成が定番:
my-project/
├── pom.xml ← 親 (packaging=pom)
├── api/
│ └── pom.xml
├── core/
│ └── pom.xml
└── web/
└── pom.xml<!-- 親 pom.xml -->
<project>
<groupId>com.example</groupId>
<artifactId>my-project</artifactId>
<version>1.0.0</version>
<packaging>pom</packaging>
<modules>
<module>api</module>
<module>core</module>
<module>web</module>
</modules>
<dependencyManagement>
<!-- バージョンを 1 箇所で管理 -->
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.16.0</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
<!-- 子モジュール pom.xml -->
<project>
<parent>
<groupId>com.example</groupId>
<artifactId>my-project</artifactId>
<version>1.0.0</version>
</parent>
<artifactId>api</artifactId>
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<!-- version は親で管理されるので不要 -->
</dependency>
</dependencies>
</project>
主要プラグイン
| プラグイン | 用途 |
|---|---|
maven-compiler-plugin | コンパイル設定 (Java バージョン) |
maven-surefire-plugin | ユニットテスト実行 |
maven-failsafe-plugin | 結合テスト実行 |
maven-shade-plugin | Fat JAR 作成 (全依存同梱) |
spring-boot-maven-plugin | Spring Boot 用 Fat JAR / Docker |
jacoco-maven-plugin | カバレッジ計測 |
versions-maven-plugin | 依存バージョン一括更新 |
maven-release-plugin | リリースタグ作成・バージョン上げ |
Maven Wrapper (mvnw)
プロジェクトに Maven 本体を同梱する仕組み。チームメンバが Maven をインストールしなくても使えます:
# Maven Wrapper の生成
mvn wrapper:wrapper
# 以後は ./mvnw を使う
./mvnw clean install
./mvnw spring-boot:run
# Windows
mvnw.cmd clean install
Gradle / sbt との比較
| ツール | 記法 | 速度 | 柔軟性 |
|---|---|---|---|
| Maven | XML (宣言的) | 中 | 低 (制約強い) |
| Gradle | Groovy / Kotlin DSL | 高 (キャッシュ強力) | 高 |
| sbt | Scala DSL | 中 | 中 (Scala 専用) |
| Ant + Ivy | XML (手続き的) | 低 | 非常に高 |
選び方: 新規 Java プロジェクトなら Gradle がトレンド。既存 Java エンタープライズなら Maven が無難。
FAQ
Q: mvn install と mvn deploy の違い
A: install はローカル ~/.m2 に配置するだけ。deploy は社内/公開 Maven リポジトリ (Nexus 等) にアップロード。
Q: 依存のバージョン衝突を解決したい
A: mvn dependency:tree -Dverbose で衝突を可視化。親 POM の dependencyManagement でバージョン固定するか、子で明示的に exclude。
Q: SNAPSHOT バージョンって何?
A: 開発中の不安定版。1.0.0-SNAPSHOT のように末尾に -SNAPSHOT を付けます。リリース時は SNAPSHOT を外します。
📸 参考画像
※ 旧バージョンから引き継いだ参考画像です。手順・図解の補助としてご覧ください。

ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
同階層のページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?