MavenはAntに代わるビルドシステムですが、
Antとは異なった設計思想になっている為
最初に使い始めるまでが大変です。
とりあえず、このページではMavenのインストールから
簡単なサンプルプロジェクトのビルドまでを説明します。
まず、Mavenのサイトからバイナリをダウンロードします。
Mavenのソースはここからはダウンロードできません。
CVS経由で行う必要がありますが、通常のMavenユーザならば
その必要も無いはずです。
インストールといっても、適当な場所に解凍するだけです。
ここでは、その場所を $MAVEN_HOME とします。
次に、$MAVEN_HOME/bin にパスを通します。
Linuxならば
% export PATH=$PATH:$MAVEN_HOME/bin
とします。
MavenはJavaで作成されているので
実行にはJavaが必要です。
JDKが無い環境では動きません。
JDK(1.4以上)をインストールして、環境変数 JAVA_HOME を設定します。
これで、インストールは完了です。
Antと大きく違うのがここです。
Mavenはネットワーク(HTTP)に繋がった環境で使う必要があるので
場合によってはプロキシの設定をする必要があります。
お使いのブラウザの設定を見て、プロキシを設定していないようならば
この項は飛ばして結構です。
設定ファイルは、~/.m2/settings.xml にあるので
これを修正します。無ければ新規作成しましょう。
<settings>
<proxies>
<proxy>
<active>true</active>
<protocol>http</protocol>
<host>proxy.somewhere.com</host>
<port>8080</port>
<username>proxyuser</username>
<password>somepassword</password>
<nonProxyHosts>www.google.com|*.somewhere.com</nonProxyHosts>
</proxy>
</proxies>
</settings>
こんな感じにします。
詳しい項目の内容は settings.xml解説 のページを参照して下さい。
設定ファイルのパスを見てわかるように、これは(Linux)ユーザ依存のファイルです。
いつもrootで作業している人などは
これを機に作業用のユーザを作成することを考えましょう。
これで、プロキシの設定は完了です。
Antの場合、既存のプロジェクトがあり
そこにbuild.xmlを作成して…という流れが一般的かと思いますが
Mavenではそのやり方は多少面倒なので、別のやり方で進めます。
まず、新規にサンプルプロジェクトを作成します。
適当なディレクトリに移動して、以下のコマンドを実行します。
% mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app
mvn というのが、Mavenの実行スクリプトです。
先程説明したように、このディレクトリにパスを通している必要があります。
最初に mvn を実行すると、Mavenは様々なファイルをHTTP経由でダウンロードします。
プロキシの設定がうまくいっていないと、ここで処理が先に進まなくなってしまいます。
ダウンロードされたファイルは ~/.m2/repository 以下に格納されます。
このダウンロード処理は初めだけで、以下はここに格納されたファイルが使用されます。
パスを見てわかるように、このファイルもユーザホームディレクトリ以下に
格納されるので、これらは全プロジェクトで共通して使われることになります。
通常、このディレクトリ以下のファイルを意識する必要はありません。
さて、先程のコマンドを実行すると
カレントディレクトリの直下に my-app というディレクトリが作成されます。
その配下のパス構成は以下のようになっています。
.
|-- pom.xml
`-- src
|-- main
| `-- java
| `-- com
| `-- mycompany
| `-- app
| `-- App.java
`-- test
`-- java
`-- com
`-- mycompany
`-- app
`-- AppTest.java
「階層深っ!」と思う方もいるでしょう。
しかし、これがMavenのデフォルトパス構成なのです。
これが先程説明した「既存プロジェクトにbuild.xmlを作成して…」
といったAntとは異なる部分です。
Mavenで使用するプロジェクトは、パス構成をMavenで定められたものに
合わせる必要があるのです。
もちろん、これらは設定ファイルによって変更することも可能ですが
なるべくならば変更せずにMavenの流儀に合わせることをお勧めします。
なぜMavenがこういった設計になっているか、考えてみて下さい。
プロジェクト毎にバラバラのパス構成になっていることは
決して好ましい事実ではないのです。
pom.xml というファイルが作成されています。
これが、Mavenのメインになる設定ファイルです。
Antのbuild.xmlに相当します。
src/main/java の下にJavaファイルが、
src/test/java の下にJUnitテスト用のJavaファイルが格納されています。
まずは、サンプルプロジェクトをコンパイルしてみましょう。
% mvn compile
ここでも、最初の実行時には多少の時間が掛かります。
コンパイルに必要なライブラリをいくつかダウンロードするからです。
target/classes ディレクトリが作成され、コンパイルされたclassファイルが
配下に格納されます。
JUnitによるテストを実行してみます。
% mvn test
テスト結果が標準出力に出力されます。
インストール、デプロイ用のパッケージ(デフォルトではjar)を作成します。
% mvn package
targetディレクトリ以下に、my-app-1.0-SNAPSHOT.jar というファイルが作成されます。
このファイル名は、pom.xml の内容によって自動的に生成されます。
Webアプリならばwarファイルになるでしょう。
パッケージをインストールします。
% mvn install
デフォルトでは、インストール先は ~/.m2/repository 以下になります。
インストールされたパッケージは、他プロジェクトから参照するときに
利用されます。
つまり、先程ダウンロードした各種ライブラリと同じ扱いになります。
パッケージをデプロイするには、pom.xmlに以下の要素を追加します。
<distributionManagement>
<repository>
<id>sample-repository-id</id>
<url>file:///path/to/deploy</url>
</repository>
</distributionManagement>
この例では、同一ファイルシステム上にデプロイします。
FTPやSSHを利用したデプロイも可能です。
デプロイするためのコマンドは、以下のようになります。
% mvn deploy