Apache Mavenはプロジェクトのコンパイル等を自動で行ってくれるプロジェクト管理ツールである。Apache Antの後継にあたる。最大の特徴としては、依存ライブラリを設定しておくと必要となった場合に依存ライブラリが自動ダウンロードされる点があげられる。最近ではGithub上などで公開されるJavaプロジェクトは、たいていMavenか同様のツールであるGradleでコンパイル方法が設定されている。公開されたライブラリをコンパイルするだけのためにも入れておいたほうがいいプラグラインである。
今回はEclipse上でMavenを利用するためのプラグインであるM2Eclipseのインストール方法と、基本的な利用方法を確認する。
■ M2Eclipseプラグインのインストール
EclipseにM2Eclipseプラグインをインストールするには、以下のような手順で行う。
1.Eclipseのメニュー「ヘルプ - 新規ソフトウェアのインストール」を選択。
2.作業対象として以下を指定。
ロケーション |
http://download.eclipse.org/technology/m2e/releases |
3.表示されたプラグライン一覧から「Eclipse用Maven統合」とその配下すべてを選択し、「次へ」ボタンを押下。その後、指示に従って進めばインストール完了。途中、セキュリティ警告が表示されるが、無視して特に問題ない模様。
■ Mavenの利用方法
現在(2016年6月)の最新バージョンは3.3.9。ライセンスはApache License 2.0であるため、商用にも利用可能である。コンパイル・実行方法などの決まった動作をPOM(Project Object Model)ファイルに定義し、コマンドによって処理を指定することで定義通りの処理を行う。makeやanといったコンパイルツールのようなものと思っていただければよい。
特徴
最大の特徴は、必要なライブラリを自動的にダウンロードしてくれる点である。このため、POMファイルの記述を複製するだけで理論上同じ環境を再現できることになる。自動ダウンロードできるのはインターネット上のMavenリポジトリ(
*2)上に登録されているライブラリに限られているのが難点ではあるが、有名なライブラリはたいてい登録されているためあまり問題にはならない。自動ダウンロードされたファイルはデフォルトでOSのユーザーフォルダに格納される模様。
図:mavenによる自動ダウンロードのイメージ図。PC①上で作成した環境はpom.xmlを複製することでPC②上に再現できる。
利用上の注意点としては、自動ライブラリのダウンロードにはインターネットへの接続環境が必要という点である。プロキシを利用している場合は設定ファイル(conf/settings.xml)の変更が必要となる。
Mavenプロジェクトの構成
Mavenを利用する場合、Javaプロジェクトのファイル構成がある程度決められている。Maven用プロジェクトのデフォルトのフォルダ構成は以下のとおりである。なお、これらのフォルダ構成はPOMファイルにて変更することができる。
プロジェクトフォルダ
┣ pom.xml : POMファイル
┣ build : 成果物フォルダ(*.classや*.jarファイル等)
┗ src : ソースコード・フォルダ
┣ main : メインのソース(*.javaファイル)
┗ test : テスト用ソース(*.javaファイル)
図:Mavenプロジェクトのフォルダ構成
POMファイル記述
POMファイルはXMLファイルとして記述する。POMファイルの基本的な構成は以下のとおりである。詳細については公式サイトのリファレンス(
*3)を参照していただきたい。
表:pom.xmlで利用する主なタグ
タグ |
内容 |
project |
ルートタグ。
すべてのタグはこのタグの配下に記述する。 |
modelVersion |
POMの記述バージョン。 |
groupId |
このMavenプロジェクトのパッケージ名 |
version |
このMavenプロジェクトのバージョン |
name |
このMavenプロジェクトの名前 |
url |
このMavenプロジェクトのwebサイトのURL
(MVNリポジトリのURLではなく、ポータルサイト等のURL) |
artifactId |
作成する成果物の名前 |
packaging |
作成する成果物のパッケージタイプ。
「jar」「war」「ear」などを指定する |
dependencies |
依存するライブラリの情報 |
以下にpom.xmlファイルのサンプルを示す。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.aaa</groupId>
<artifactId>MavenSampleProject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>MavenSampleProject</name>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
まず1行目~2行目のprojectタグの各種プロパティはおまじないと思っていただければよい。3行目では、pomのバージョン4.0.0の記述に準拠することを宣言でしている。
プロジェクトの内容は5行目~11行目で記述されており、プロジェクトフォルダの名前は『MavenSampleProject』で、パッケージ名(*.javaファイルの先頭に記述するpackageのこと)は『com.aaa』、バージョンは『0.0.1-SNAPSHOT』、コンパイルすると『*.jar』ファイルが生成されることが分かる。
また、プロジェクトで利用する外部ライブラリについては12行目~19行目に記述されている。ここでは『junit』ライブラリのバージョン『3.8.1』が、コマンド『mvn test』実行時に必要であることが記述されている。このdependenciesタグに記述されたファイル(依存ファイル)がローカル環境上に存在しない(クラスパスが通っていない)場合にMVNリポジトリから自動ダウンロードが行われることになる。また、依存ファイルがさらに外部のライブラリに依存している場合、それらもまとめてダウンロードされる。
Mavenコマンド
Mavenプロジェクトに対してコンパイル等の処理を実行するには、Mavenコマンド(『mvn [options] [goal] [phase]』の形)を利用する。Mavenコマンドはpom.xmlの記述をもとに処理を実行する。以下に主なMavenコマンドを示す。詳細については公式サイトのリファレンス(
*4)を参照していただきたい。
表:主なMavenコマンド
Mavenコマンド |
内容 |
mvn compile |
ソースをコンパイルする |
mvn package |
ライブラリ・ファイル(*jar,*.war等)を作成 |
mvn test |
テスト用のJavaクラスを実行する |
mvn archetype:generate |
空のMavenプロジェクトを作成する |
mvn site |
このMavenプロジェクトのサイトを作成する |
mvn javadoc |
javadocを作成する |
mvn install |
作成したjarファイルをローカルリポジトリにインストールする。
他のプロジェクトから参照可能になる |
mvn deploy |
このMavenプロジェクトをリモートリポジトリへ格納する |
mvn clean |
プロジェクトのクリーン |
■ M2Eclipseの基本操作
プロジェクト名やpom.xmlを右クリックすると、ポップアップメニューに「Maven」が追加されている。M2Eclipseはこのメニュー上で操作を選ぶだけで、mavenの各操作が可能になっている。
以下で新しいMavenプロジェクトの作成方法を確認する。
1.Eclipseのメニューから「ファイル - 新規作成 - プロジェクト」を選択。
2.プロジェクトの種類として「Mavenプロジェクト」を選択し、「次へ」ボタンを押下。
3.次とその次の画面はなにも入力せず「次へ」を選択。プロジェクトの設定画面で「グループID」「アーティファクトID」「パッケージ」を入力して「完了」ボタンを押下。
4.空のMavenプロジェクトが作成される。
5.Mavenコマンドを発行する場合には、プロジェクト名を右クリックして「実行」メニューから実行する。空のMavenプロジェクトを作成した直後でも、test用のJavaファイルが自動生成されるため「mvn test」等が利用可能になっている。試しに「Maven test」を選択すると、初回起動時は諸ファイルのダウンロードを行った後に、以下のようにコンパイル・実行の成功メッセージが表示される。
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running com.aaa.MavenSampleProject.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.013 sec
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 39.980 s
[INFO] Finished at: 2016-06-02T18:46:24+09:00
[INFO] Final Memory: 13M/205M
[INFO] ------------------------------------------------------------------------
ちなみに、pom.xmlを開いた場合には以下のような編集画面が表示されるが、ソースコード表示にしたい場合は画面下の「pom.xml」タブをクリックすればよい。
■ 参照
- Apache Maven公式
- MVNリポジトリ
- Apache Maven公式 「POM Reference」
- Apache Maven公式 「Maven Getting Started Guide」
改訂履歴
・2016年06月26日 一部改訂。自動ダウンロードファイルの格納先について、誤った記述を修正