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の組み合わせも相当よさげ〜。

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.