MavenReference

Maven2について

マジでやばい!

  • Maven2はMaven1.0と比べて大幅に高速化
  • プラグインはJavaで記述されている
  • プラグインなどの呼び出しやセットアップがDIコンテナ()によって行われている
  • maven.xmlがなくなって、設定はPOMファイルに集約

wiki内部の関連ドキュメント

入手先

http://maven.apache.org

環境

  • JDK 1.4(ただしソースからビルドしなおすなら1.3でも可)
  • ローカルリポジトリに100MB程度は必要

インストール

  1. 入手したアーカイブを適当なディレクトリに解凍。
  2. 下記の環境変数を設定する
    M2_HOMEMaven2のインストール先ディレクトリ
    JDKはインストール済みとする。
  3. PATHに%M2_HOME%\bin($M2_HOME/bin)を追加する。
  4. コンソールにて下記コマンドを実行
    mvn
    • 必要なプラグイン等がダウンロードされる。
    • このとき、ローカルリポジトリはホームディレクトリ以下の.m2に設定される。

何が変わったか

とにかくプラグインの構成がシンプルになっている。
例えば以前はwar:warのゴールを実行するとコンパイルやテストの実行、JARの生成、WARの生成が行われていたがMaven2ではpreGoalやpostGoalの廃止に伴いwarプラグインはリソースを統合してWARファイルにまとめるだけである。
コンパイル、テスト、JARの生成、WARの生成、ローカルリポジトリへの配置はinstall:installゴールで行われる。
Maven2.0ではMaven1.0において混乱の原因であったpreGoal、postGoalによるチェーン方式からinstall:installを頂点とするディレクトリ型に変わっているようである。

プラグインについて

Maven1.0の時はプラグインの詳細な動作を調べるためにはプラグインのmaven.xmlなどJellyのソースコードを見ていた。
Maven2.0においては、プラグインはJavaで記述されているためプラグインのJavaのソースが必要(だと思う)。そのため下記のサイトを参考にsvnでソースをチェックアウトする。
http://maven.apache.org/guides/development/guide-building-m2.html

  • チェックアウトでcygwin上で実行したコマンド
    svn co https://svn.apache.org/repos/asf/maven/components/trunk
    maven-components
    
    svn co https://svn.apache.org/repos/asf/maven/trunks maven
  • プラグインのソースコードを閲覧するときのポイント
    プラグインの作成方法について、まだ未調査だがMojoのソースコードを見ると(たぶんだけど)プラグインようのカスタムのドックレット用に@goalというタグが設定されている。@goalのコメントがゴール名になる。
  • プラグインのコールとコマンドの関係
    Maven2では下記のコマンドで実行される。
    mvn war:war
    つまり、
    「プラグイン名」:「ゴール名」
    となっている。ゴール名は@goalで指定されている名称となる。
  • 代表的なプラグイン

ドキュメント

Maven2のサイト自体が大きいので迷子になりやすい、よく使うと思われるドキュメントの一覧を記す。

スケルトンプロジェクト生成

Maven1.0において、gennappというコマンドがあったが、Maven2.0ではarchetypeというコマンドが用意されている。要するにMavenによるプロジェクトのスケルトンを吐き出す機能である。
標準のスケルトンを吐き出すためには下記のコマンドを実行する。

mvn archetype:create -DgroupId=org.makino_style.study.svn
-DartifactId=sample

-DgroupId?には生成するプロジェクトのグループID(およびJavaのパッケージ)を指定し、-DartifactId?には生成ファイル(JARファイルなど)に利用される名称を指定する。上記のコマンドで生成した標準プロジェクトのディレクトリマッピングは下記のようになっている。(maven-archetype-coreのソースファイルからDefaultArchetype?.javaを参照)

プロジェクトディレクトリ
├ pom.xml (POMファイル)
└ src
    ├ main
    │  ├ java (本体のソース)
    │  └ resources (本体のリソース)
    └ test
       ├ java (テストのソース)
       └ resources (テストのリソース)

また、標準のプロジェクトとは別に下記の7つが存在する。これらを指定するためには-DarchetypeArtifactId?に各Archetypeの名称を指定する。

Archetype名説明
maven-archetype-j2eeJ2EEのマルチプロジェクト
maven-archetype-mojoM2のプラグインプロジェクト
maven-archetype-portletJetSpeed?のポートレットプロジェクト
maven-archetype-profiles標準のプロジェクトと一緒か??
maven-archetype-quickstart標準のプロジェクトと一緒か??
maven-archetype-siteAPTなどに対応したドキュメントプロジェクト
maven-archetype-webappWARプロジェクト

例えばWebApp?プロジェクトなら下記のように打ち込む。

mvn archetype:create -DgroupId=com.mycompany.app 
-DartifactId=my-webapp
-DarchetypeArtifactId=maven-archetype-webapp

http://maven.apache.org/guides/mini/guide-webapp.html

ビルドについて

webappプロジェクト

スケルトンの生成

下記コマンドを実行する。

mvn archetype:create
-DgroupId=org.makino_style.study.mvn
-DartifactId=SampleWebApp
-DarchetypeArtifactId=maven-archetype-webapp

ビルド

mvn install:install

eclipseプロジェクト化

mvn eclipse:eclipse

CheckStyle?の実行

mvn checkstyle:checkstyle

リロード   新規 編集 凍結 差分 添付 複製 改名   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS
Last-modified: 2010-03-14 (日) 07:00:26 (2958d)