ほぼはじめてのMaven
Javaを触る機会が増えてきて嬉しい今日このごろ。
思えばここ数年、お仕事では.NETの案件とか教育事業の案件とかで、
家に帰ってからはRubyやらActionScriptやらiPhoneやら流行ものに流され続け、
30歳にして再びJavaに帰ってきたかんじ。
ちょうど良いのでこれからもう一度Javaについて勉強していこうと思います。
と、前置きが長くなったけど、今日はMavenを触ってみる日にします。
Mavenとは
Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.
http://maven.apache.org/
Apache Mavenはソフトウェアプロジェクトマネージメントもろもろを包括的に扱うツールです。
MavenはPOM(Project Object Model)をベースに構成されています。
Mavenはプロジェクトのビルドを管理し、それらの情報をドキュメントとして出力します。
インストール
サイトからMaven 2.2.1をDL。
http://maven.apache.org/download.html
MacにMaven2をインストールする - Fight the Future
へびのぬけがら: Mac OS XにMaven2をインストール
上記のサイトを参考にアーカイブを展開し、環境変数を設定。
export MAVEN_HOME=/usr/local/apache-maven-2.2.1 export PATH=$MAVEN_HOME/bin:$PATH
そんで動作確認。
/Users/masahiko/work_mvn% mvn --version Apache Maven 2.2.1 (r801777; 2009-08-07 04:16:01+0900) Java version: 1.5.0_16 Java home: /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home Default locale: ja_JP, platform encoding: UTF8 OS name: "mac os x" version: "10.5.7" arch: "i386" Family: "unix" /Users/masahiko/work_mvn%
と、Javaのバージョンが1.5だったということで今気づく。まー今はこのままでやってみる。
Mavenプロジェクトの作成
作業フォルダに移動して、Mavenでプロジェクトを作成してみる。
手元にある書籍を参考に、以下のコマンドを実行。
mvn archetype:create -DgroupId=com.example.app -DartifactId=app -Dversion=0.0.1
オプションの意味とかはあとで説明するとして、
上記のコマンドを実行すると、必要なライブラリのインストールが自動で始まる。
インターネットからいろいろDLされてるのがログでわかる。
EMobileががんばってくれてる。
なんだか気持ち良い。
無事にコマンドは終了し、appという名前のフォルダが作成される。
treeコマンドで見るとこんなかんじ。
pom.xmlが肝っぽいのでこれから調べる。
あとは、srcフォルダ下にプログラムを開発するためのmainフォルダと、テストコード用のtestフォルダに分かれているのを確認。
% tree `-- app |-- pom.xml `-- src |-- main | `-- java | `-- com | `-- example | `-- app | `-- App.java `-- test `-- java `-- com `-- example `-- app `-- AppTest.java
Mavenの規約は以下のとおり。
- ソースコードはsrc/main/java
- ソースコードのリソースはsrc/main/resources
- テストコードはsrc/test/java
- テストコードのリソースはsrc/test/resources
- プロジェクトフォルダ直下にpom.xml
とりあえずpom.xmlを見てみる。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example.app</groupId> <artifactId>app</artifactId> <packaging>jar</packaging> <version>0.0.1</version> <name>app</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>
groupId、artifactId、versionタグは、
mvn archetype:create -DgroupId=com.example.app -DartifactId=app -Dversion=0.0.1
に指定したオプションから決まってるみたい。
ちなみに
- groupId・・・アーティファクトを作成した組織のID
- artifactId・・・groupIdで指定した組織の作るアーティファクトのID
- version・・・アーティファクトのID
アーティファクトとは
書籍から引用。
Mavenの世界では、ソースコードから、コンパイル、ユニットテスト、統合テスト、アーカイブといった行程を経て作成されるプロジェクトの成果物であるファイルのことをアーティファクトと呼ぶ。
アーティファクトという言葉の定義は抽象的であり、
実際には実行コードとなるJARファイルやWARファイル、EARファイルを指したり、
JavaDocやソーソコード自体を指す事もある。*1
コンパイル
ここまででappプロジェクト下には、App.javaというJavaのソースコードが作成されてるのでそいつをコンパイルしてみます。
mvn compile
初回起動時には、必要なライブラリの追加インストールが始まる。
でコンパイルは無事終了。
ユニットテスト
appプロジェクト作成時にApp.javaとあわせてAppTest.javaというテストコードも作成されてるので、そいつを実行してみます。
mvn test
例の如く初回起動時には必要なライブラリが追加インストールされる。のでちょっと待つ。
テストコードの実行も無事終了する。
ちなみにmvn testを実行するとコンパイルも合わせて実行される。
Jarファイルの作成
続いてクラスファイルをアーカイブしてJarファイルを作成します。
mvn package
初回起動時のみ必要なライブラリが追加されるのは言うまでもない。。のでちょっと待つ。
つづく。
参考書籍
Apache Maven 2.0入門 Java・オープンソース・ビルドツール
- 作者: 野瀬直樹,横田健彦
- 出版社/メーカー: 技術評論社
- 発売日: 2006/12/13
- メディア: 大型本
- 購入: 7人 クリック: 140回
- この商品を含むブログ (96件) を見る
*1:この場合はバイナリファイルと区別してセカンダリ・アーティファクトと呼んで区別する