| = TomEE Maven Plugin |
| :jbake-date: 2016-03-16 |
| :jbake-type: page |
| :jbake-status: published |
| :jbake-tomeepdf: |
| |
| TomEE Maven Plugin is a set of goals for the development and to prepare to go in production: |
| |
| - `tomee:build` |
| - `tomee:exec` |
| - `tomee:configtest` |
| - `tomee:debug` |
| - `tomee:deploy` |
| - `tomee:exec` |
| - `tomee:list` |
| - `tomee:run` |
| - `tomee:start` |
| - `tomee:stop` |
| - `tomee:undeploy` |
| |
| === Run |
| |
| The most commonly used goal, it allows to start a tomee with applications. Here is its configuration: |
| |
| [.table.table-bordered,options="header"] |
| |=== |
| |Name|Default|Description |
| |
| |synchronization|-|a synchronization (see after the table) |
| |synchronizations|-|list of synchronizations |
| |reloadOnUpdate|-|should the application be redeployed when a synchronization is triggered |
| |
| |skipCurrentProject|false|should current project not be considered as a deployable even if its packaging is compatible (war typically) |
| |tomeeVersion|auto, plugin one|which version of TomEE to use |
| |tomeeGroupId|org.apache.tomee|TomEE artifact groupId |
| |tomeeArtifactId|apache-tomee|TomEE artifact artifactId |
| |tomeeType|zip| the type of the TomEE artifact , only zip supported at the moment |
| |tomeeClassifier|webprofile|which flavor of TomEE to use (classifier) |
| |tomeeShutdownPort|read from server.xml|the shutdown port |
| |tomeeShutdownAttempts|60|how many times to wait for startup/shutdown (waits 1s in between) |
| |tomeeShutdownCommand|SHUTDOWN|the shutdown command |
| |tomeeAjpPort|read from the pom|the AJP port if needed |
| |tomeeHttpsPort|read from the pom|the HTTPS port if needed |
| |args|-|command line arguments (system properties, javaagent, JVM options ...) |
| |debug|-|start and wait for a remote debugger to connect |
| |debugPort|5005|used when debug to change the default port |
| |simpleLog|false|use one line logs |
| |extractWars|false|explode wars before starting |
| |stripWarVersion|true|remove the version from the war name |
| |stripVersion|false|remove the version from the artifact name whatever it is (even jar) |
| |webappResources|${project.basedir}/src/main/webapp|where web resources are |
| |webappClasses and classes|${project.build.outputDirectory}|where artifact binaries are |
| |catalinaBase|${project.build.directory}/apache-tomee|where to create the tomee instance |
| |context|-|name of the current artifact (rename the war from the maven name to this one) |
| |webappDir|webapps|path to webapps folder from tomee.base |
| |appDir|apps|path to apps folder from tomee.base |
| |libDir|lib|where is lib folder |
| |mainDir|${project.basedir}/src/main|used in openejb mode to change default config of conf/lib/bin folders to openejb instead of tomee |
| |config|${project.basedir}/src/main/tomee/conf|a conf folder synchronized with TomEE one |
| |bin|${project.basedir}/src/main/tomee/bin|a bin folder synchronized with TomEE one |
| |lib|${project.basedir}/src/main/tomee/lib|a lib folder synchronized with TomEE one |
| |systemVariables|-|a map of system properties |
| |classpaths|-|a list of additional entries for the startup classpath |
| |customizers|-|a list of customizers |
| |jsCustomizers|-|a list of js customizers (js scripts) |
| |groovyCustomizers|-|a list of groovy customizers (groovy scripts) |
| |webappDefaultConfig|false|auto config war oriented |
| |quickSession|true|session generation will use `Random` instead of `SecureRandom` (for dev) |
| |forceReloadable|false|ensure TomEE supports reloading/redeployment |
| |forceJspDevelopment|true|JSP will be auto-recompiled on changes |
| |libs|-|dependencies to add in lib, see after this table for advanced usage |
| |endorsedLibs|-|dependencies to add in endorsed, see after this table for advanced usage |
| |javaagents|-|javaagents to add on the JVM, supports maven coordinates |
| |persistJavaagents|false|should javaagent be saved or just use for this plugin run |
| |webapps|-|additional applicatinos to deploy |
| |warFile|${project.build.directory}/${project.build.finalName}.${project.packaging}|the war to deploy |
| |workWarFile|${project.build.directory}/${project.build.finalName}"|the exploded war to deploy |
| |removeDefaultWebapps|true| should default webapps (ROOT, docs, ...) be deleted |
| |deployOpenEjbApplication|false|should openejb internal application be deployed |
| |removeTomeeWebapp|true|should tomee webapp (with EJBd adapter) be deployed |
| |tomeeAlreadyInstalled|false|skip all the setup configuration |
| |ejbRemote|true|should EJBd be activated |
| |checkStarted|false|should the plugin check the server is up (useful when used with `pre-integration` phase |
| |useConsole|true|wait for the end of the execution reading inputs from the console (like `quit` command) |
| |useOpenEJB|false|use openejb-standalone instead of tomee |
| |inlinedServerXml|-|a server.xml content in pom.xml directly |
| |inlinedTomEEXml|-|a tomee.xml content in pom.xml directly |
| |overrideOnUnzip|true|if when unzipping tomee a file is already there should it be overriden |
| |skipRootFolderOnUnzip|true|ignore root folder of the zip |
| |keystore|-|path to keystore for HTTPS connector |
| |=== |
| |
| |
| Synchronization are blocks defining a source and target folder and both are synchronized. It typically copy |
| `src/main/webapp` resources in `target/apache-tomee/webapps/myapp/`. |
| |
| |
| ==== Customizers |
| |
| Customizers are java classes loadable by the plugin and with a main or implementing `Runnable` and taking optionally |
| as constructor parameter a `File` representing `tomee.base` or no arguments. |
| |
| They are executed when creating the TomEE instance. |
| |
| There are two scripting flavors of that: js and groovy. Both will have some contextual variables: |
| |
| - catalinaBase: tomee base path |
| - resolver: a maven resolver to get a dependency using maven. For instance: `resolver.resolve('group', 'artfact', 'version', 'type')` |
| |
| ==== Dependencies (libs) |
| |
| The format can be: |
| |
| - a maven dependency: |
| |
| [source] |
| ---- |
| groupId:artifactId:version |
| ---- |
| |
| - a zip dependency and extracted in lib folder: |
| |
| [source] |
| ---- |
| unzip:groupId:artifactId:version |
| ---- |
| |
| - a matching prefix to remove: |
| |
| [source] |
| ---- |
| remove:prefix |
| ---- |
| |
| ==== Example |
| |
| [source,xml] |
| ---- |
| <plugin> |
| <groupId>org.apache.tomee.maven</groupId> |
| <artifactId>tomee-maven-plugin</artifactId> |
| <version>${tomee7.version}</version> |
| <configuration> |
| <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> |
| ---- |
| |
| === Build |
| |
| Excepted synchronization, build plugin inherit from `run` Mojo its configuration. It just adds the following: |
| |
| [.table.table-bordered,options="header"] |
| |=== |
| |Name|Default|Description |
| |formats|-|map of configuration, keys are format (zip, tar.gz) and value the target location |
| |zip|true|create a zip from the configured instance |
| |attach|true|attach created artifacts |
| |skipArchiveRootFolder|false|don't add a root folder in the zip |
| |=== |
| |
| === Tomcat like goals |
| |
| `configtest`, `start` and `stop` just execute these commands on the server (like on `catalina.sh`). |