#pragma section-numbers off
[[TableOfContents]]
= 概要 =
Jakartaプロジェクトの一つ。
project object model (POM)に基礎を置いているbuildツールです。
Antと比較して以下のような特徴があります。
* buildに必要なJarを(ほぼ)自動的に取得する
* ある一定のGoal(Antでいうtarget)が最初から規定されている
* Plug-in機能によりGoalを増加させる事ができる
という物です。
Mavenで初期状態でいくつかのPlug-inによりGoalが用意されていますので、["Ant"]のようにtargetのすべてを記述する必要はありません。
{{{
maven war:war
}}}
とすればwar Plug-inによりwarが作成されます。
ただし、これはすべてが自動的というわけではなく、["Ant"]のbuild.xmlにあたる、project.xmlが必要になります。
しかし、targetを書く必要はないため飛躍的にその記述量は軽減できます。
{{{
maven -g
}}}
にて利用可能なGoalが一覧表示されます。
buildに必要なJarを(ほぼ)自動的に取得する機能に関しては、取得先を変更する事も可能なので、プロジェクトなどで利用する場合はプロジェクト専用サーバを設置しておくとよいでしょう。
プロジェクト専用サーバの機能としてはWebサーバ機能、CVS、メーリングリスト、["Scarab"]によるtracking System機能をもったサーバを用意すればよいでしょう。
= URL =
http://maven.apache.org/
http://maven-plugins.sourceforge.net/
= インストール =
http://maven.apache.org/start/download.html
よりmaven-1.0-beta-8.tar.gzもしくはmaven-1.0-beta-8.zipをダウンロード。解凍して任意のフォルダにおきます。
{{{$HOME/.bashrc}}}などの初期設定ファイルや{{{$HOME/.mavenrc}}}に
{{{
MAVEN_HOME=解凍したmavenの位置
export MAVEN_HOME
}}}
を設定
{{{
${MAVEN_HOME}/bin/maven
}}}
で起動。
{{{
[ERROR] java.lang.Exception: The project.xml file you specified has a length of zero.
}}}
で起動エラーがおきたら成功です。
{{{${MAVEN_HOME}/bin}}}にPathを通しておくと以後の運用が楽になります。
= プロジェクト =
project.xmlは["Ant"]におけるbuild.xmlです。
http://maven.apache.org/start/integrate.html
http://maven.apache.org/reference/project-descriptor.html
project.xmlの定義は
http://cvs.apache.org/viewcvs.cgi/maven/src/xsd/maven-project.xsd
に存在します。["XMLSchema"]です。DTDでないので注意してください。
XMLSchemaが読めない場合は以下の画像で理解してください。
[http://maven.apache.org/images/project-descriptor.gif](現在行方不明)
かなり最小限のproject.xml
{{{
Testsample
Sample
0.0.1
src/main
src/test
ant
1.5.1
junit
3.8.1
}}}
= 利用方法 =
[http://maven.apache.org/reference/user-guide.html Maven User Guide]
に記述がある。
ここではUser Guideより重要な部分を抜粋して記述する。
== 設定ファイル ==
Properties Processingの項に説明がある。
{{{
${maven.home}/bin/driver.properties
${project.home}/project.properties
${project.home}/build.properties
${user.home}/build.properties
}}}
最後に読み込んだファイルの設定が優先されます。
== Repository ==
RepositoryというのはMavenがJarをダウンロードする位置です。Mavenは利用するJarを(ほぼ)自動的に取得します。
Repositoryの位置は
{{{
maven.repo.local
}}}
の設定をpropertiesファイルに記述する事で指定可能です。デフォルトでは、
{{{
${MAVEN_HOME}/repository
}}}
になります。
== 依存関係 ==
開発において各種Jarを利用しますが、そのバージョンをDependenciesとしてproject.xml内に規定できます。
{{{
ant
1.5.1
}}}
以上の場合はant1.5.1を利用するという事になります。
== プロジェクトWeb ==
{{{
maven site:generate
}}}
で作成する事が可能です。
== warの作成 ==
http://maven.apache.org/reference/plugins/war/properties.html
を参考にpropertyを設定します。
一部の動作がまだ不便です。
= Plug-in =
各機能は{{{Plug-in}}}により実装されています。{{{Plug-in}}}の動作もpropertiesファイル内で設定できます。
{{{Plug-in}}}の設定可能なpropertiesは以下を参照してください。
http://maven.apache.org/reference/plugins/index.html
== Plug-in作成手順 ==
プラグインを作成する場合は既存のプラグインを参照するのが現状ではもっとも早いでしょう。
plugin.jellyというファイルがほんんどの場合中心です。
Jellyのドキュメントは以下にあります。
[http://jakarta.apache.org/commons/sandbox/jelly/ JakartaJelly]
[http://www.terra-intl.com/jakarta/commons/sandbox/jelly/ Jakartaの杜JakartaJelly翻訳]
= Maven FAQ =
== XDocletとの連携 ==
http://orinoco.flamefew.net/moatas/archives/000115.html
= 参考サイト =
http://homepage2.nifty.com/ymagic/javaworld/
= 参考 =
project.xmlのDTD(注:このDTDは不完全です)
{{{
}}}
----
CategoryJava