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.

It 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 completely open source and created with
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[Start using TomEE]
* link:#to-start-developing-tomEE[Start developing TomEE]
* link:#contributing[Contributing]
* link:#changelog[Changelog]
* link:#license[License]

'''''

=== 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.

=== Start developing TomEE

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

Apache TomEE is built with Apache Maven >= 3.6.3 and Java 11. 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]


