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)という考え方に基づいて管理している。
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プロジェクト]で新規作成を行う。
次画面はデフォルトのまま移動し、その次の画面にて、雛形を指定する。
次画面にて、groupIdおよびartifactId、作成パッケージなどを設定し、プロジェクト作成が完了する。
Mavenで作成したプロジェクトは、Java1.5ベースとなっているため、ビルドパスを変更する必要がある。 作成されたプロジェクトを選択し、ビルドパスの構成を選択する。
ビルドパスの構成画面にて「ライブラリー」タグを選択し、JREシステムライブラリー(1.5)を除去する。 除去後、ライブラリーの追加を実施する。
JREシステムライブラリーを選択する。
ワークスペースで登録済みのJREまたはインストールされている別のJREを選択し、完了する。
JREシステムライブラリーが指定したバージョンに変更されていることを確認したら、適用して完了となる。
ビルドパスの設定が完了したら、Mavenプロジェクトとして開発が可能となる。