Edited at

【初心者必見】Mavenまとめ

More than 1 year has passed since last update.

参考サイト:http://www.techscore.com/tech/Java/ApacheJakarta/Maven/index/


Mavenとは

Mavenはプロジェクト管理ツールです。プロジェクトに関する色々な情報をPOMに集約し、POMの情報に基づきプロジェクト全体を管理します。

Mavenを使用すると、プロジェクトのライフサイクルに含まれるコンパイルやテストなどの各作業をコマンド一つで行うことができます。

maven.png


  • リモートリポジトリとローカルリポジトリは、どちらもプラグインやライブラリが置かれる場所です。


  • Mavenは必要なプラグインやライブラリをリモートリポジトリからダウンロードし、それをローカルリポジトリに保存します。

  • 各プロジェクトはローカルリポジトリに保存されているライブラリを参照します。

  • ローカル環境にある全てのプロジェクトの間でライブラリを共有することができます。

  • リモートリポジトリは独自のものを用意することもできます。

    例えば、社内用のリポジトリを用意して、社内で作成したプロジェクトはそこに公開するという使い方ができます。


POMについて

pom.xmlはプロジェクトに関する情報を持つファイルです。


project 要素以下の各要素が持つ意味

要素
内容

modelVersion
POMのバージョン

groupId
プロジェクトを一意に識別する名前。プロジェクトのルートパッケージ名を指定するのが一般的です。

artifactId
プロジェクトの成果物の名前。 作成する JAR や WAR, EAR ファイルなどの名前に使用されます。

packaging
作成する成果物のパッケージング・タイプ。 jar (デフォルト), war, ear などがあります。

version
プロジェクトのバージョン。

name
プロジェクトの表示名。 ドキュメントを作成するときなどに使用されます。

url
プロジェクトのサイトの URL。 ドキュメントを作成するときなどに使用されます。

dependencies
プロジェクトが依存するライブラリの情報。


コンパイル

mvn compile

src/main/java/配下のソースファイルのコンパイルが行われます。

コンパイルにより作成されたクラスファイルはtarget/classesディレクトリに出力されます。


テスト

mvn test

デフォルトでは、以下のパターンにマッチするファイルがテストとして実行されます。


  • **/Test*.java

  • **/*Test.java

  • **/*TestCase.java

また、以下のファイルはデフォルトで除外されます


  • **/Abstract*Test.java

  • **/Abstract*TestCase.java

  • **/*$*


パッケージング

mvn package

成功するとtargetディレクトリに**.jarのようなファイルが作成されます。

作成されるファイルの名前は、pom.xmlに記述されている artifactIdversionから決定されます。

拡張子は,pom.xmlに記述されているpackagingから決定されます。


ローカルリポジトリへのインストール

mvn install

作成したパッケージングファイルはローカルリポジトリにインストールすることで、ローカルにある他のプロジェクトから参照することができるようになります。


リモートリポジトリへのデプロイ

リモートリポジトリに配備するには、事前にリモートリポジトリの情報を pom.xml に記述しておく必要があります。

リモートリポジトリの情報は、distributionManagement 要素の入れ子としてrepository要素を追加します。 repositoryの子要素にはid (リポジトリの識別子), name (リポジトリの名前), url (リポジトリの場所を示す URL)などが指定可能です。


設定例

<distributionManagement>

<repository>
<id>deploy-repository</id>
<name>repository-name</name>
<url>http://hoge/deployRepository</url>
</repository>
</distributionManagement>

作成したパッケージングファイルをリモートリポジトリに配備するには、次のコマンドを実行します

mvn deploy