2. Maven 入門
2006.05.31 株式会社四次元データ 鈴木 圭
- 2.1. Maven のアーキテクチャ
- 2.2. Maven の実行
- 2.3. プロジェクトの作成
- 2.4. pom.xml について
- 2.5. コンパイル
- 2.6. ユニットテスト
- 2.7. ドキュメンテーション
- 2.7.1. Javadoc の作成
- 2.7.2. サイトの作成
- 2.8. JAR ファイルの作成
- 2.9. ローカルリポジトリへのインストール
- 2.10. リモートリポジトリへの配備
- 2.11. プロジェクトのクリーン
- 2.12. まとめ
今回は、Maven を使った開発の流れを掴んでいただくために、実際にプロジェクトを作成しながら説明をしていきます。
注意として、Maven は必要に応じてプラグインを自動的にダウンロードする仕組みをとっています。そのため、Maven を使用するときは基本的にネットワークに接続できる環境で行う必要があります。 また、Maven を最初に実行するときはプラグインのダウンロードが大量に発生します (ネットワーク環境によりますが、数分程度かかります)。
2.1. Maven のアーキテクチャ
最初に Maven のアーキテクチャについて簡単に説明します。以下の図は Maven のアーキテクチャを表したものです:
Maven を使用すると、プロジェクトのライフサイクルに含まれるコンパイルやテストなどの各作業をコマンド一つで行うことができます。 Ant を使う場合とは異なり、Maven では使用するコマンドやビルドステップが統一されているので、 一度 Maven プロジェクトのビルド方法を理解してしまえば、他の Maven プロジェクトのビルド方法も習得したことになります。
リモートリポジトリとローカルリポジトリは、どちらもプラグインやライブラリが置かれる場所です。 Maven は必要なプラグインやライブラリをリモートリポジトリからダウンロードし、それをローカルリポジトリに保存します。そして、各プロジェクトはローカルリポジトリに保存されているライブラリを参照します。この仕組みによって、ローカル環境にある全てのプロジェクトの間でライブラリを共有することができます。
また、リモートリポジトリは独自のものを用意することもできます。 例えば、社内用のリポジトリを用意して、社内で作成したプロジェクトはそこに公開するという使い方ができます。
Maven のアーキテクチャに関するより詳しい説明は、必要になったときに随時行っていきます。 ここでは Maven の大まかな構成を掴んでいただければ十分です。
説明の流れとしては、
- 2.3. プロジェクトの作成
- 2.5. コンパイル
- 2.6. ユニットテスト
- 2.7. ドキュメンテーション
- 2.8. JAR ファイルの作成
- 2.9. ローカルリポジトリへのインストール
- 2.10. リモートリポジトリへの配備
- 2.11. プロジェクトのクリーン
という具合に、開発のどのステップでどのコマンドを使用するのかを中心に進めていきます。
2.2. Maven の実行
Maven を使うにはコンソールから「mvn」コマンドを実行します。 (Maven のインストールが完了していない場合は、前回の記事の「1.2. Maven の入手とインストール」を参照してください。)
mvn コマンドには色々な引数を指定することができますが、まずは「--help」引数を指定して mvn コマンドを実行してみましょう:
mvn --help
すると mvn コマンドの基本的な使い方が表示されます:
usage: mvn [options] [<goal(s)>] [<phase(s)>] Options: -C,--strict-checksums Fail the build if checksums don't match -c,--lax-checksums Warn if checksums don't match -P,--activate-profiles Comma-delimited list of profiles to activate ...
以下では実際にプロジェクトを作成しながら、利用するコマンドと開発の流れを説明していきます。
[注釈] Proxy 環境における Maven の使用について
以降の説明には、Maven によるネットワークアクセスが発生する操作が含まれます。
もし、Proxy 環境下で Maven を利用しているのであれば、Maven をインストールしたディレクトリの conf/settings.xml ファイルにProxy に関する設定を記述する必要があります(settings.xml はユーザの環境に応じた情報を記述するファイルです)。
例えば、Proxy のホストを「proxy.somewhere.com」、ポートを「8080」、 ユーザ名とパスワードをそれぞれ「proxyuser」と「somepassword」にする場合は以下のように記述します:
<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>
また、Proxy を経由しないで接続するホストは nonProxyHosts 要素で指定することができます。 複数のホストを指定する場合は、「|」で区切って指定するか、ワイルドカードを使用します。 上の例では「www.google.com」もしくは「*.somewhere.com」にマッチするホストは Proxy を経由しないでアクセスするように指定しています。