Mavenに触ってみました。
Maven(メイベン - 達人)
Maven は Apache Software Foundation で開発されているJavaベースのプロジェクト管理ツール。
Mavenはソフトウェア開発プロジェクトをPOM(Project Object Model)というモデルで
プロジェクトを管理する。
管理するプロジェクトの単位は、最終的に1つのJarファイルを生成する規模を想定している。
project.xmlで以下のような情報を管理する。
インストール
①アーカイブを公式サイトからダウンロードする。
http://maven.apache.org/
②展開したディレクトリへのパスを「MAVEN_HOME]という環境変数へ定義する。
(${MAVEN_HOME}/binへパスを通す。)
③ローカルリポジトリの初期化を行う。
成功すると、リポジトリへJarが格納される。
mkdir ${MAVEN_HOME}/repo install_repo.bat ${MAVEN_HOME}/repo
実行
Mavenは、引数にゴールを渡してあげることで実行される。
ゴールとは、Antのターゲットのようなものである。
異なる点としては、Antはガリガリとターゲットを記述する必要があることに
対して、Mavenではプラグインとしてあらかじめいくつかのゴールが定義されている。
(当然、自前でゴールを定義することも可能。)
【実行方法】
maven <プラグイン名>:<ゴール名>
①サンプルプロジェクトを生成する。
Sampleというディレクトリを作成し、その中で「genapp」というゴールを実行する。
$ mkdir sample $ cd sample/ $ maven genapp
すると、Sampleへ以下のようなディレクトリが作成されます。
└─src ├─conf ├─java │ └─example │ └─app └─test └─example └─app
②コンパイルする。
targetというディレクトリが新たに生成され、クラスファイルが作成されました。
$ maven java:compile $ tree ├─src │ ├─conf │ ├─java │ │ └─example │ │ └─app │ └─test │ └─example │ └─app └─target └─classes └─example └─app
③テストする。
test-classes、test-reportsというディレクトリが新たに生成され、クラスファイルと
テスト結果のレポートファイルが作成されました。
コンパイルでは、テストクラスはコンパイルされないみたい。
(java:compileする前にいきなりtestをすると、コンパイルした後でテストをしてくれるらしい。)
$ maven test $ tree ├─src │ ├─conf │ ├─java │ │ └─example │ │ └─app │ └─test │ └─example │ └─app └─target ├─classes │ └─example │ └─app ├─test-classes │ └─example │ └─app └─test-reports
④サイトを作成する。
Javadocの他にもなんかいろいろできました。。
すげーな。
$ maven site $ tree ├─src │ ├─conf │ ├─java │ │ └─example │ │ └─app │ └─test │ └─example │ └─app └─target ├─classes │ └─example │ └─app ├─docs │ ├─apidocs │ │ ├─example │ │ │ └─app │ │ │ └─class-use │ │ └─resources │ ├─images │ │ └─logos │ ├─style │ ├─xref │ │ └─example │ │ └─app │ └─xref-test │ └─example │ └─app ├─generated-xdocs ├─javadoc ├─linkcheck │ └─docs ├─test-classes │ └─example │ └─app └─test-reports
project.properties
- maven.build.dist
クラスファイルの出力先を指定する。
標準は、「target/classes 」。
- maven.build.dist
テストクラスファイルの出力先を指定する。
標準は、「target/test-classes 」。
- maven.repo.remote
リモートリポジトリの場所を指定する。
- maven.build.dir
targetディレクトリの場所を指定する。
- maven.checkstyle.properties
Checkstyleの設定ファイルを指定する。
- maven.docs.outputencoding
リポートファイルを生成する際のエンコーディングを指定する。
指定しないと化けます。。
その他
- リモートリポジトリ
Mavenでは依存関係にあるJarファイルをリモートリポジトリ 2 より取得する仕組みになっている。
project.xmlのdependency要素に定義されたライブラリがローカルに存在しなければ、リモートリポジトリから取得する。
デフォルトのリモートリポジトリは、「http://www.ibiblio.org/maven/」。
- ローカルリポジトリ
リモートリポジトリから取得したライブラリをキャッシュしておくローカルのディレクトリ。
標準は、「$HOME/.maven/repository」 。
ローカルリポジトリへ自前のJarを登録する場合は、以下のような構成でJarを格納する。
$HOME/.maven/repository/MyJar/jars/MyJar-01.jar
Maven Repo Search
dependencyのidやversionを設定するのに便利。
http://maven.ozacc.com/search