Apache Maven を使ってみよう(その 2)
Maven のビルドライフサイクル
Maven のビルドライフサイクルには多数のゴールが設定されている。ちなみにデフォルトのライフサイクルには何と
validate
,initialize
,generate-sources
,process-sources
,generate-resources
,process-resources
,compile
,process-classes
,generate-test-sources
,process-test-sources
,generate-test-resources
,process-test-resources
,test-compile
,process-test-classes
,test
,prepare-package
,package
,pre-integration-test
,integration-test
,post-integration-test
,verify
,install
,deploy
こんなにゴールが設定されている。
しかし、実際にはこれを全部使うことはない。以下、主だったものを説明する。
準備
自動生成したプロジェクトに用意されている Java のソースコードを少し修正する。
App.java
package jp.mydns.akanekodou; /** * Hello world! */ public class App { public static void main(String[] args) { System.out.println("Hello World!"); } }
こちらはインデントのスタイルを少し手直ししただけ。
AppTest.java
package jp.mydns.akanekodou; import org.junit.Test; import static org.junit.Assert.assertTrue; /** * Unit test for simple App. */ public class AppTest { /** * Rigorous Test :-) */ @Test public void testApp() { assertTrue(true); } }
こちらは JUnit4 向けに大幅に修正した。そのままでも問題ない(JUnit4 の jar の中に JUnit3 のライブラリが含まれているため)が、後々のことを考えて書き直しておく。ちなみにテストコードを書いたことがある人ならすぐにわかると思うが、このテストは自動的に成功し、実質何のテストも行っていない*1。
主なゴールについて
ゴール | 説明 |
---|---|
validate |
全てのプロジェクトの情報が揃っていて正しいことをチェックする。 |
compile |
ソースコードをコンパイルする。 |
test-compile |
テストコードをコンパイルする。 |
test |
テストを実行する。 |
package |
コンパイルされたコードを配布形式にまとめる。 |
integration-test |
統合テスト環境でパッケージを処理する。 |
verify |
パッケージが有効なことを確認するチェックを行う。 |
install |
ローカルリポジトリにパッケージをインストールする。 |
deploy |
リモートリポジトリに最終的なパッケージを公開する。 |
これは順番に実行する必要は無く、あるフェーズを実行するとそれに先行するフェーズが自動的に処理される。これが前回説明した「ビルドライフサイクルの自動化」である。
なお、これとは別にクリーンライフサイクルに clean
などのゴールが設定されている。clean
は以前のビルドが生成したファイルを全て削除するものである。
Eclipse からビルドライフサイクルを実行する
Eclipse からもいくつかのビルドライフサイクルを実行することができる。例えば test
を実行したければ、Maven プロジェクトを右クリックして [Run As] → [Maven test] をクリックすればよい。
どうやって main
を実行するの ?
Eclipse を使っているなら、普通に(?) App.java
を [Run] で動かして実行できるが、Maven から実行することはできないのだろうか。実はそのためには Maven 向けに用意されたプラグインが必要になる。それは次回に。
*1:最初から用意されているテストコードについても、同じく実質何のテストも行わないコードである。