Mavenプロジェクトの作成

Mavenとは

Mavenとは、プログラム開発を行う際のコンパイル・テストなどのコマンドやライブラリの自動配置などを担うためのツール群である。 Javaでは、開発環境や実行環境におけるJVMのバージョンやライブラリのバージョンなどが相互に影響しているため、手作業で環境を作成するためには幅広い知識が必要になる。 また、ライブラリによっては相互関係のあるライブラリが多岐にわたっており、それぞれのバージョンを手作業で合わせるのはかなり困難であり、開発者間で環境を合わせることも そのため、ライブラリ管理やコンパイル時・実行時のパス設定などを自動的に設定するためのツールとしてMavenやGradle、過去にはAntが多くのプロジェクトで利用されている。

統合開発ツールであるEclipseでは、最新の2019.09ではMavenとGradleについては標準で対応している。

Mavenでできること

Mavenは以下のようなコマンドが用意されている。

コマンド 概要
mvn architype:generate Mavenプロジェクトを作成する
mvn validate プロジェクトの配置やコンパイルエラーなどがないかを確認する(コンパイルは未実行)
mvn compile プロジェクトのコンパイルを実行し、targetディレクトリを作成する
mvn test テスト(JUnit)を実行する
mvn package jarやwarなどの成果物を作成する(valiate、compile、testを実行し、問題がなければ作成)
mvn install ローカルのリポジトリにパッケージングされた成果物を配置する
mvn deploy インターネット上のリポジトリにパッケージを配置する
mvn clean targetディレクトリを削除し、コンパイル前の状態に戻す
mvn javadoc:javadoc JavaDocを作成する

Mavenのディレクトリ構成

Mavenプロジェクトの標準ディレクトリ構成は以下の通り。 基本的にはデフォルトのまま利用する。

プロジェクトルート
    |--- LICENSE.txt    # プロジェクトのライセンス情報を記述するファイル
    |--- README.txt     # プロジェクト情報を記述するファイル
    |--- NOTICE.txt     # プロジェクトの帰属通知を記述するファイル
    |--- pom.xml        # mavenのライフサイクル規定を記述する設定ファイル
    |
    |--- src
    |    |--- main      # 実装するJavaやWebアプリのパッケージを格納するディレクトリ
    |    |     |--- java    # Javaのソースファイルを格納するディレクトリ
    |    |     |--- resources   # 実行時に利用する設定情報(リソース)ファイルを格納するディレクトリ
    |    |     |--- webapp  # Webアプリに関係するHTMLやCSS、JSPなどを格納するディレクトリ
    |    |     |--- filters # ターゲットとしてフィルタリングするリソースファイルを格納するディレクトリ
    |    |
    |    |--- test  # JUnitテストで利用するJavaや設定情報を格納するディレクトリ
    |    |     |--- java    # テストコード(ファイル名はTest**.java、**Test.java、**TestCase.javaのいずれか)
    |    |     |--- resources # テスト実行時に利用する設定情報(リソース)ファイルを格納するディレクトリ
    |    |     |--- filters # テスト環境ごとにフィルタリングするリソースファイルを格納するディレクトリ
    |    |
    |    |--- config    # Mavenプロジェクトの設定ファイルを格納するディレクトリ
    |    |--- site      # Webサイトの情報を格納するディレクトリ
    |
    |--- target
           |--- classes # mvn compileでコンパイルされたクラスファイルを格納するディレクトリ

POM(Project Object Model)

Mavenでは、プロジェクトのライフサイクルをPOM(Project Object Model)という考え方に基づいて管理している。

graph LR; A[プロジェクトの作成
mvn architype:generate] --> B[コンパイル
mvn compile] B --> C[テスト
mvn test] C --> D[パッケージング
mvn package] D --> E[インストール
mvn install] E --> F[公開
mvn deploy]

このライフサイクルを規定するための設定ファイルが、pom.xmlである。

mvnコマンド

Mavenをコマンドで利用する場合は、mvnコマンドを使用する。 mvnコマンドを利用するためには、環境変数JAVA_HOMEの設定が必要となっている。

mvn オプション 実行内容:ゴール

mvn archetype:generateコマンドを利用し、プロジェクトの雛形を作成する。

mvn archetype:generate \      # コマンドの実行(archetype:generateで雛形作成)
  -DarchetypeArtifactId=maven-archetype-quickstart \  # 雛形の選択(今回はquickstart)
  -DinteractiveMode=false \ # 対話形式での雛形作成をOFF
  -DgroupId={group-id} \    # プロジェクトルートパッケージ、一般的には社名など
  -DartifactId={project-name} # プロジェクト名

コマンドを実行すると、POMを設定するための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>co.jp.fullness</groupId>
  <artifactId>sample-project</artifactId>
  <version>1.0</version>
  ・・・
</project>

EclipseでのMavenプロジェクト作成

Eclipseでは、同梱のMavenを利用してMavenプロジェクトを作成することができる。 Eclipse2019.10での同梱Mavenバージョンは3.5である。

Eclipseの[ファイル]→[新規]→[Mavenプロジェクト]で新規作成を行う。

Eclipseでのプロジェクト作成01

次画面はデフォルトのまま移動し、その次の画面にて、雛形を指定する。

Eclipseでのプロジェクト作成02

次画面にて、groupIdおよびartifactId、作成パッケージなどを設定し、プロジェクト作成が完了する。

Eclipseでのプロジェクト作成03

Mavenで作成したプロジェクトは、Java1.5ベースとなっているため、ビルドパスを変更する必要がある。 作成されたプロジェクトを選択し、ビルドパスの構成を選択する。

Eclipseでのプロジェクト作成04

ビルドパスの構成画面にて「ライブラリー」タグを選択し、JREシステムライブラリー(1.5)を除去する。 除去後、ライブラリーの追加を実施する。

Eclipseでのプロジェクト作成05

JREシステムライブラリーを選択する。

Eclipseでのプロジェクト作成06

ワークスペースで登録済みのJREまたはインストールされている別のJREを選択し、完了する。

Eclipseでのプロジェクト作成07

JREシステムライブラリーが指定したバージョンに変更されていることを確認したら、適用して完了となる。

Eclipseでのプロジェクト作成08

ビルドパスの設定が完了したら、Mavenプロジェクトとして開発が可能となる。

Eclipseでのプロジェクト作成09