はじめに

この資料はMavenでJavaプロジェクトを開発する技術者に向けて整理されたものです。

Mavenはプロジェクト(コードやリソースの集まり)をビルドしてアーティファクト(成果物)を得るためのツールです。 ソースコードのコンパイルに加えて、コンパイルに必要なJARファイルを探したり・ユニットテストを実行したり・ビルドしたJARファイルを 公開したりといった作業を簡単に行うことができます。またMavenは「テストの前にコンパイル」「JARファイル作成の前にテスト」といった ビルド・ライフサイクル (作業の順番)や、「依存元の前に依存先をビルド」といった 依存関係 をきちんと考えてビルドしてくれます。

このため開発者は細かいことを気にすることなく「何をやりたいのか」だけMavenに伝えれば良くなります。 Mavenを使うことで、誰でも簡単にプロジェクトを同じ手順でビルドできるのです。

なお本ドキュメントはJava開発にある程度なれた個人を想定して書かれており、コンパイル・PATH・CLASSPATH・JARファイル・ユニットテストについての説明は省略しています。

本資料の目的

Mavenは歴史が古いため、情報を公開しているサイトが多数存在します。このためひとたび検索すれば多様な日本語情報を入手できますが、 Maven2の情報が混ざっていたり最新のプラグイン事情を考慮していなかったりと情報の質にバラつきがあります。特にMavenそのものに 詳しくない方には、見つかった情報が今でも有効なのか・利用して良いのかどうかを判別することは難しいと思われます。

本資料は2016年11月時点での最新バージョン、を前提として情報をまとめています。このため上記の問題を解決し、読者に新鮮な 情報を提供できると考えています。またCIやJava EE、"JVM言語"など近年Mavenと組み合わせることが増えてきた技術との 連携方法についても紹介することで、より実用性の高い助力を目指そうとしています。

皆さんがMavenと親しみ、プロダクト(製品)を効率よく楽しく開発することの一助となれば幸いです。

本資料の構成

本資料は3部構成になる予定です。現時点では第1部ならびに第2部の一部を公開しています。

第1部は入門です。Mavenをこれから利用する方のために、Mavenの利点・導入方法・利用方法・基本用語といった基礎を簡単に紹介しています。 Mavenで管理されたプロジェクトにはじめて参加する開発者が、開発に参加するためのキャッチアップを助けることを目的としています。

第2部は応用です。Mavenをより深く理解し活用することを望む技術者のために、独自プラグインの実装方法・サブモジュールの詳細・ プライベートリポジトリの運用・CIとの連携について紹介する予定です。プロダクト管理の効率向上を支援することを目的としています。

第3部はクックブックです。Java以外の言語をどうビルドするか、サーブレットコンテナやデータベースに依存するコードをどうテストするか、 などの知識を集約できればと思っています。どのような知識にニーズがあるのかわかっていないので、リクエストをお待ちしています。

動作確認環境

OSX 10.13.2にてOracle JDKならびにMavenを使用して動作確認を行っています。 環境に強く依存するコードは含みませんので、JDKが動く環境であればWindowsであれUNIXであれ問題なく動作すると思われます。

サポート

本資料ならびに本資料が参照するソースコードはGitHubで入手できます。 資料の改善提案や修正依頼などはGitHubのissueあるいはpull requestを通じてご連絡願います。

ライセンス

本資料の文章部分はAttribution-NonCommercial 4.0 Internationalによってライセンスされています. またソースコードはApache License, Version 2.0によってライセンスされています。 読者はライセンスに従い自由に本資料を複製・再配布できます。

著作権

文章ならびにソースコードの著作権は、特別の記載がない限りKengo TODAに帰属します。 ただし特別の記載がある場合、例えば寄稿いただいた文章や外部サイトからの引用についてはその限りではありません。

謝辞

本資料を作成するきっかけをくださった@ikeike443氏に御礼を申し上げます。 またMavenを継続的に開発・改善してくださっている開発者各位、GitHubというすばらしいフィールドを用意してくださっているGitHub, Inc.、 Javaとそのコミュニティを支えているすべての方に感謝します。1つでも欠けていたらこの資料は産まれませんでした。

Last updated