http://www.apache.org/licenses/LICENSE-2.0.html[image:http://img.shields.io/:license-apache-blue.svg[License]]
https://github.com/apache/tomee/tomee/fork[image:https://img.shields.io/github/forks/apache/tomee.svg?style=social&label=Fork[GitHub
forks]]
https://github.com/apache/tomee[image:https://img.shields.io/github/stars/apache/tomee.svg?style=social&label=Star[GitHub
stars]]

== Apache TomEE

Apache TomEE is a lightweight, yet powerful, JavaEE Application server
with feature rich tooling.

Is the Java Enterprise Edition of Apache Tomcat (Tomcat + Java EE =
TomEE) and currently is a JakartaEE (formerly JavaEE) and Microprofile
compliant application server.

The application server is totally open source and created with the
community efforts for the public good. Collaborative consensus and
peer review according to the Apache Foundation guidelines are used to
guarantee the highest quality standards.

Official website: https://tomee.apache.org

'''''

* link:#to-start-using-tomee[To start using TomEE]
* link:#to-start-developing-tomEE[To start developing TomEE]
* link:#contributing[Contributing]
* link:#changelog[Changelog]
* link:#license[License]

'''''

=== To start using TomEE

You can use TomEE to deploy Jakarta EE, Microprofile and Java EE
compliant applications.

* Apache TomEE is distributed 5 different flavors, you can check the
http://tomee.apache.org/comparison.html[comparison] table and then
proceed to http://tomee.apache.org/download-ng.html[download] the
distribution for your use case.
* http://tomee.apache.org/docs.html[Documentation and examples] are
available in the official website.
* The dozens of application included in the examples/ folder of the
project.

=== To start developing TomEE

TomEE is open source and you can help in its creation.

Apache TomEE is built with Apache Maven >= 3.3.9 and Java 8. The
http://tomee.apache.org/community/sources.html[Contribute to TomEE]
section from the official website for a complete Git, Github, Build,
Test, and Continuous Integration details.

==== Quick build

If you only like to compile all classes and package up TomEE _without_
running tests then you can use the following build options

....
mvn -Pquick -Dsurefire.useFile=false -DdisableXmlReport=true -DuniqueVersion=false -ff -Dassemble -DskipTests -DfailIfNoTests=false clean install
....

==== Full build

This will run all the tests. We have thousands of tests and you should
go out to grab a bite in the meantime.

....
mvn clean install
....

If you intend building in environments where multicast is not allowed
then build with:

....
mvn clean install -DskipMulticastTests=true
....

Full build that execute arquillian test on all TomEE distributions:

....
mvn clean install -Pall-adapters
....

==== Partial build

This will only build a module and the modules using it as a dependency.

To build just TomEE distribution execute:

....
mvn clean install -pl tomee/apache-tomee -am -Dmaven.test.skip=true
....

TomEE zip/tar.gz will be in tomee/apache-tomee/target

To build TomEE Embedded to be able to develop with its maven plugin
execute:

....
mvn clean install -pl maven/tomee-embedded-maven-plugin -am -Dmaven.test.skip=true
....

=== Contributing

The http://tomee.apache.org/community/index.html[community] section from
the official website offers details on how you can join the mailing
lists, file tickets, fix bugs and start to contribute to the project.

=== Changelog

List of
https://issues.apache.org/jira/projects/TOMEE?selectedItem=com.atlassian.jira.jira-projects-plugin:release-page&status=released[Jira
Releases] (*)

(*) You need to login or sign up with a free Apache Jira Account

=== License

link:LICENSE[Apache License 2.0]
