プロジェクト管理ツール Maven について調べ&まとめておく
概要
基本的に、コーディングはEclipseで、プロジェクト管理はMavenで、という役割分担。
(※連携は、プラグイン or 外部コマンドとして登録で。⇒4. Eclipseとの連携 | TECHSCORE(テックスコア)⇒実践した際の日記は「UbuntuにJava開発環境を構築してみた - oknknicの日記」)
Mavenの主なうまみは下記。
- プロジェクト管理系の豊富なコマンド群、および拡張ポイントの提供
- プロジェクトの依存ライブラリの管理
- デフォルト構成による一貫したプロジェクト構成
実行
コマンド: mvn [options] [
- options
- goal: プラグインがもつ機能。Antのtargetに相当
- phase: プラグイン内のゴールのエイリアスと理解しておけばほぼ正しい。phaseの実行順序を定義した「ビルドライフサイクル」にのっとり、選択されたphaseの事前phaseが併せて実行される。
- validate
- compile
- test
- package
- install
- deploy
実行例(テストフェーズをスキップして、オフライン環境でjar生成まで実施):
mvn -o package -Dmaven.test.skip=true
Maven 自体の設定
Mavenディレクトリ/conf/settings.xml (※ユーザ毎の設定は、ホームディレクトリ/.m2/settings.xml)に、下記などを設定可能。
リファレンスは下記。
管理対象プロジェクトの設定
プロジェクトに関するあらゆる情報を pom.xml に集約的に記述する。(※ちなみにPOMは、Project Object Model の略)
pom.xml にはソースコードの格納場所等にデフォルト値があるため、記述量が少なくて済む&PJ間で構成が一貫する。
設定可能な項目には下記のようなものが存在する。
- dependencies: 依存ライブラリ
- scope: クラスパスに追加する状況の範囲指定。デフォルトは compile(コンパイル時も、実行時も、テスト時も、…)
- リポジトリ
- repositories: リモートリポジトリ(ライブラリ取得用)。デフォルトはセントラルリポジトリ
- pluginRepositories: リモートリポジトリ(プラグイン取得用)
- distributionManagement: リモートリポジトリ(プロジェクト配布先用)
- plugins: 読み込むプラグイン。セントラルリポジトリに登録されているプラグインはMaven – Available Plugins
- packaging: 成果物のパッケージング・タイプ。デフォルトは jar
- url: プロジェクトのWebサイトURL
プロファイル
ビルド環境やリリース環境などの環境に依存して使い分けが必要になる設定を記述。
記述場所には下記の種類がある。
- pom.xml: そのプロジェクトだけで利用可能
- profiles.xml: そのプロジェクトだけで利用可能
- %USER_HOME%/.m2/settings.xml: そのユーザだけで利用可能
- %M2_HOME%/conf/settings.xml: 全ユーザで利用可能
プロファイルを用いることにより、
プロファイルによって設定を変更するアプローチ
のように、開発者間で jdbc.properties を変更したりできる。
プラグインの作成
8. Maven2 プラグインの作成 | TECHSCORE(テックスコア)を参考に、必要になった頃に。