---
title: tomee-maven-pluginで組み込みTomEE入りJava EE 6アプリを作る
tags: ["Java", "Java EE 6", "TomEE"]
categories: ["Middleware", "AppServer", "Tomee", "1.6"]
date: 2014-04-07T20:03:14Z
updated: 2014-04-17T04:43:35Z
---

ポータブルな、APサーバー入りjarが最近好き。`java -jar xxx.jar`で起動できるやつ。

Tomcat単品組み込みならspring-bootつかったり、tomcat7-maven-pluginで簡単に作れる。

Java EEでもできないかなと思ったが、Java EE 7のGlassFishやWildFlyだとできなさげ。

[TomEEのMaven pluginならできそうだった][1]ので、TomEEを試してみた。


### TomEEことはじめ

Maven Archetypeから雛形プロジェクト作成

    $ mvn archetype:generate -DarchetypeGroupId=org.apache.openejb.maven -DarchetypeArtifactId=tomee-webapp-archetype

ビルド&ラン

    $ mvn clean package tomee:run

http://localhost:8080 にアクセス


![image](https://qiita-image-store.s3.amazonaws.com/0/1852/96fbbaab-56a5-5eea-e7bb-e25a9bda8189.png)

できた！

### 最新版を使用する

組み込みjarは[tomee-maven-plugin][2] 1.6.1(まだsnapshot)からサポートされている。そっちを使う場合は

    $ mvn archetype:generate -DarchetypeGroupId=org.apache.openejb.maven -DarchetypeArtifactId=tomee-webapp-archetype -DarchetypeCatalog=http://repository.apache.org/content/groups/snapshots -DarchetypeVersion=1.6.1-SNAPSHOT

pom.xmlに以下を追加・・

      <pluginRepositories>
        <pluginRepository>
            <id>apache-snapshot</id>
            <name>Apache Snapshot Repository</name>
            <url>https://repository.apache.org/content/groups/snapshots/</url>
        </pluginRepository>
      </pluginRepositories>


で

    $ mvn package tomee:exec

を実行すると`target/<artifactId>-<version>-exec.jar`ができる。

あとは`java -jar target/<artifactId>-<version>-exec.jar`で起動！
ポータブルだ！

(※ Windowsで`mvn tomee:exec`して作ったjarだと起動できなかった・・)

デフォルトではJava EE 6のWeb Profileのアプリが作られる。

JAX-RSを追加したい場合は、`<tomeeClassifier>`に`javars`を指定する。

    <plugin>
        <groupId>org.apache.openejb.maven</groupId>
        <artifactId>tomee-maven-plugin</artifactId>
        <version>1.6.1-SNAPSHOT</version>
        <configuration>
            <context>ROOT</context>
            <tomeeClassifier>jaxrs</tomeeClassifier>
        </configuration>
    </plugin>


JAX-WSやJMSも使いたい場合は、`<tomeeClassifier>`に`plus`を指定する。

    <plugin>
        <groupId>org.apache.openejb.maven</groupId>
        <artifactId>tomee-maven-plugin</artifactId>
        <version>1.6.1-SNAPSHOT</version>
        <configuration>
            <context>ROOT</context>
            <tomeeClassifier>plus</tomeeClassifier>
        </configuration>
    </plugin>

違いは[こちら][3]を参照。

TomEEならWebSocket(JSR-356)も使えると思うから、Java EE 7じゃなくても少しは我慢できるかも！？

これで少しはJava EEでアプリ作る気が出てきた。


  [1]: http://rmannibucau.wordpress.com/2014/03/24/java-jar-my-app-in-tomee-jar/
  [2]: http://tomee.apache.org/tomee-maven-plugin.html
  [3]: http://tomee.apache.org/comparison.html
