maven2でJavaEE5のマルチモジュールプロジェクトひな形作成

やっぱmavenすごいってことで、めも。予め下記をダウンロードする。

[shell]
# それぞれinstallする
$ mvn install:install-file -Dfile=ee5-archetype-war-jsf-1.1.jar -DgroupId=sample.plugin -DartifactId=ee5-archetype-war-jsf -Dversion=1.1 -Dpackaging=maven-plugin
$ mvn install:install-file -Dfile=ee5-archetype-ejb-1.1.jar -DgroupId=sample.plugin -DartifactId=ee5-archetype-ejb -Dversion=1.1 -Dpackaging=maven-plugin
$ mvn install:install-file -Dfile=ee5-archetype-ear-1.1.jar -DgroupId=sample.plugin -DartifactId=ee5-archetype-ear -Dversion=1.1 -Dpackaging=maven-plugin

#top levelのprojectを作成
$ mvn archetype:create -DarchetypeArtifactId=maven-archetype-site-simple -DartifactId=myapp -DgroupId=com.example

#warとかearとかejbのprojectを作成
$ mvn archetype:create -DarchetypeArtifactId=ee5-archetype-war-jsf -DarchetypeGroupId=sample.plugin -DarchetypeVersion=1.1 -DartifactId=myapp-war -DgroupId=com.example
$ mvn archetype:create -DarchetypeArtifactId=ee5-archetype-ejb -DarchetypeGroupId=sample.plugin -DarchetypeVersion=1.1 -DartifactId=myapp-ejb -DgroupId=com.example
$ mvn archetype:create -DarchetypeArtifactId=ee5-archetype-ear -DarchetypeGroupId=sample.plugin -DarchetypeVersion=1.1 -DartifactId=myapp-ear -DgroupId=com.example
[/shell]

自動的に下記のような構成になっている。
[shell]
myapp
|– myapp-ear/
| `– pom.xml
|– myapp-ejb/
| |– pom.xml
| `– src/
| |– main/
| | |– java/
| | | `– com/
| | | `– example/
| | | |– Sample.java
| | | `– SampleImpl.java
| | `– resources/
| | `– META-INF/
| | `– ejb-jar.xml
| `– test/
| `– java/
| `– com/
| `– example/
| `– SampleImplTest.java
|– myapp-war/
| |– pom.xml
| `– src/
| `– main/
| |– java/
| | `– com/
| | `– example/
| | `– Page.java
| |– resources/
| `– webapp/
| |– META-INF/
| | `– context.xml
| |– WEB-INF/
| | |– faces-config.xml
| | `– web.xml
| |– index.html
| `– page.jsp
|– pom.xml
`– src/
`– site/
|– apt/
| `– index.apt
`– site.xml
[/shell]

top level projectのmyappのpom.xmlにモジュールが追加されている。
[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</groupId>
<artifactId>myapp</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<distributionManagement>
<site>
<id>website</id>
<url>scp://webhost.company.com/www/website</url>
</site>
</distributionManagement>
<modules>
<module>myapp-war</module>
<module>myapp-ejb</module>
<module>myapp-ear</module>
</modules>
</project>
[/xml]

maven packageする。(myapp.earの作成)
[shell]
$ cd ~/src/myapp
$ ls
myapp-ear/ myapp-ejb/ myapp-war/ pom.xml src/

$ mvn package
[INFO] Scanning for projects…
:
$ ls myapp-ear/target/
application.xml myapp/ myapp.ear
[/shell]

う〜んmavenカッチョよすぎる。。 antの1024倍はカッチョよい。
あとおまけ。GrassFishはこれでear deployらしい。ほんと?(確認してない)
いくらCoCといえども、これはdefaultなさそうなので、さすがに設定必要そうだけど。

[shell]
$$ASROOT/bin/asadmin deploy myapp-ear/target/myapp.ear
[/shell]

JavaEE6とJBoss AS 7とかGrassFish v3.1の組み合わせも相当よさげ〜。

積雪期三ノ塔に登頂した日

というわけで、work{holiday:timewaste;} 主宰のT_keitoku師に誘われる形で、下記の登山に参戦しました。

冬の登山って、ある意味プロジェクトマネジメントと似ていて、計画が間違っていたら、それをもとに策定されたすべての技術要素が無に帰すってところがあって。。でも、結論から言うと、非常に安定した見積もり精度・・・!私、感動致しました。

予定スケジュールは下記の通り。

06:28 「立会川」発
07:02 相鉄線急行「海老名」行 乗換
07:41 小田急線急行「小田原」行 乗換
08:02 「秦野」着
08:18 「ヤビツ峠」行バス
09:10 「ヤビツ峠」着 登山開始
13:30 「塔の岳」登頂

ですが、予定外のハプニング。路面凍結の為ヤビツまでバスが行かず、 その手前の「蓑毛」から登りはじめる事に。しかし、このような予定外のロスは、よくあること。目標を三ノ塔に変更し、そこだけはコミットしようと頑張ることに。この柔軟さこそ、アジャイル!

ってなわけで登頂。


下山途中いろいろなコンテンツを楽しめるような体力も着いてきたので、次はいよいよ八ヶ岳ですかね?楽しみにしております!!どんどんコミットメントしていきます!