# Eclipse WTP Java EE Tools

Thanks for your interest in this project. Check the [contributing](CONTRIBUTING.md) document for information on that.

## Project description

The Eclipse Web Tools Platform Java EE Tools project provides Tools for developing projects
and artifacts for deployment that comply with Java EE and Jakarta EE standards.

* https://projects.eclipse.org/projects/webtools.jeetools
* Announcements and reminders for periodic meetings are sent out using the [wtp-dev](https://accounts.eclipse.org/mailing-list/wtp-dev) mailing list. You do not need to be a Committer to participate in either.

## Developer resources

Information regarding source code management, builds, coding standards, and
more.

* https://projects.eclipse.org/projects/webtools.jeetools/developer

The project maintains the following source code repository (this is not a cloning URL):

* http://git.eclipse.org/c/jeetools/webtools.jeetools

This project uses Bugzilla to track ongoing development and issues.

* Search for issues: https://bugs.eclipse.org/bugs/buglist.cgi?product=WTP+Java+EE+Tools
* Create a new report: https://bugs.eclipse.org/bugs/enter_bug.cgi?product=WTP+Java+EE+Tools

Be sure to search for existing bugs before you create another one. Remember that
contributions are always welcome!

## Eclipse Development Process

This Eclipse Foundation open project is governed by the Eclipse Foundation
Development Process and operates under the terms of the Eclipse IP Policy.

* https://eclipse.org/projects/dev_process
* https://www.eclipse.org/org/documents/Eclipse_IP_Policy.pdf

## Eclipse Contributor Agreement

In order to be able to contribute to Eclipse Foundation projects you must
electronically sign the Eclipse Contributor Agreement (ECA).

* http://www.eclipse.org/legal/ECA.php

The ECA provides the Eclipse Foundation with a permanent record that you agree
that each of your contributions will comply with the commitments documented in
the Developer Certificate of Origin (DCO). Having an ECA on file associated with
the email address matching the "Author" field of your contribution's Git commits
fulfills the DCO's requirement that you sign-off on your contributions.

For more information, please see the Eclipse Committer Handbook:
https://www.eclipse.org/projects/handbook/#resources-commit

## Contact

Contact the project developers via the project's "dev" list.

* https://dev.eclipse.org/mailman/listinfo/wtp-dev
