= TomEE Maven Plugin
:index-group: TomEE Maven Plugin
:jbake-date: 2018-12-05
:jbake-type: page
:jbake-status: published


Inspired by the Jetty Maven Plugin, the TomEE Maven Plugin is a
feature-rich plugin that allows for:

* Easy provisioning of a TomEE server
* Server start and stop
* Application deployment and undeployment

Simply add the following to the , and optionally the ), section of your
`pom.xml`

[source,xml]
----
<plugins>
    <plugin>
      <groupId>org.apache.openejb.maven</groupId>
      <artifactId>tomee-maven-plugin</artifactId>
      <version>1.7.1</version>
      <configuration>
        <tomeeVersion>1.7.1</tomeeVersion>
        <tomeeClassifier>plus</tomeeClassifier>
      </configuration>
    </plugin>
</plugins>
----

== Plugin Goals

Goal

Description

tomee:build

Create TomEE, but do not run it.

tomee:configtest

Run the Apache Tomcat `configtest` command.

tomee:debug

Same as `run` but with debug activated on the default or specified port.

tomee:deploy

Deploy an application in a running TomEE.

tomee:exec

Undocumented.

tomee:help

Display help information on the tomee-maven-plugin. Call mvn tomee:help
-Ddetail=true -Dgoal=<goal-name> to display parameter details.

tomee:list

Largely inspired by the OpenEJB command helper, but with some
differences. List deployed EJB's in a running TomEE.

tomee:run

Start and wait for TomEE.

tomee:start

Start TomEE and continue.

tomee:stop

Stop a TomEE started with start command.

tomee:undeploy

Undeploy an application in a running TomEE

Note that for the tomee:deploy and tomee:undeploy goals, the path can
either be specified within the section of the `pom.xml` using the
parameter, or it can be passed via the user property
tomee-plugin.archive. If a relative path is passed for the deploy path
archive, this must be relative to the TomEE server.

Note 2: running tomee maven plugin you can type 'quit' directly in the
console to shutdown correctly the server. 'reload' is also available
when internal openejb application is deployed.

###More Tweaks

The lib tag allows to enrich the container with some additional
libraries.

Some interesting patterns in addition to the default maven formats are
supported.

* remove:<some prefix of jar in lib folder>: remove all jar starting
with the specified prefix
* unzip:<some maven zip>: extract the zip in lib folder
* ?name=<new-name>: rename the libary once copied in lib folder

Note: the name tweak can be used to rename applications too

###Provisioning Example

This plugin is also usable in projects which are not war. For instance
you can use it in a pom project to setup a TomEE install, add libraries,
deploy apps then run the server.

[source,xml]
----
  <plugin>
    <groupId>org.apache.openejb.maven</groupId>
    <artifactId>tomee-maven-plugin</artifactId>
    <version>1.7.1</version>
    <configuration>
      <tomeeVersion>1.7.1</tomeeVersion>
      <tomeeClassifier>plus</tomeeClassifier>
      <debug>false</debug>
      <debugPort>5005</debugPort>
      <args>-Dfoo=bar</args>
      <config>${project.basedir}/src/test/tomee/conf</config>
      <libs>
        <lib>mysql:mysql-connector-java:5.1.20</lib>
      </libs>
      <webapps>
         <webapp>org.superbiz:myapp:4.3?name=ROOT</webapp>
         <webapp>org.superbiz:api:1.1</webapp>
      </webapps>
      <apps>
          <app>org.superbiz:mybugapp:3.2:ear</app>
      </apps>
      <libs>
          <lib>mysql:mysql-connector-java:5.1.21</lib>
          <lib>unzip:org.superbiz:hibernate-bundle:4.1.0.Final:zip</lib>
          <lib>remove:openjpa-</lib>
      </libs>
    </configuration>
  </plugin>
----

###Auto Reloading Example

[source,xml]
----
<plugin>
  <groupId>org.apache.openejb.maven</groupId>
  <artifactId>tomee-maven-plugin</artifactId>
  <version>1.7.1</version>
  <configuration>
    <synchronization>
      <extensions>
        <extension>.class</extension> <!-- if you want to update each time you build with mvn compile -->
      </extensions>
    </synchronization>
    <reloadOnUpdate>true</reloadOnUpdate>
  </configuration>
</plugin>
----

The Synchronization block supports the following configuration options:

* resourcesDir (default src/main/webapp)
* binariesDir (default target/classes)
* targetBinariesDir (default tomee/webapps/finalName/WEB-INF/classes)
* targetResourcesDir (default tomee/webapps/finalName)
* updateInterval (default 5 - in second)
* extensions (default html, xhtml, js and css)
* regex: a regex should match files to take into account when updating

reloadOnUpdate means to reload the entire context (webapp). This means
undeploying/redeploying the application.
