Maven Integration for Web Tools Platform

The project has been created.

Maven Integration for Web Tools Platform

Maven Integration for Web Tools Platform is a proposed open source project under the Maven Integration project.

This proposal is in the Project Proposal Phase (as defined in the Eclipse Development Process) and is written to declare its intent and scope. We solicit additional participation and input from the Eclipse community. Please send all feedback to the Proposals Forum.

Background

Maven is the defacto standard build tool in Java. It is supported at Eclipse by the M2E project which provides tooling to configure Eclipse JDT to understand Maven’s pom.xml file(s) and thereby allow users to easily import, use and modify Maven projects in Eclipse.

For this to work smoothly, M2E provides a set of extension points to allow other Eclipse plugins to provide the mapping between the "Maven World" to the "Eclipse World".

For example M2E provides a set of extension implementations to make Eclipse JDT understand the metadata in Maven pom.xml concerning classpaths and delegates the work of compiling to Eclipse’s built-in java compiler instead of what Maven would use by default.

Similarly, the pom.xml contains information about how Java EE projects (war, ejb, application-client, rar or ear) are structured and how these projects are packaged. These parts are not covered by the M2E project.

The Maven Integration for Web Tools Platform project will cover these and enable Maven projects to be easily used in context of Eclipse WTP.

Scope

Deliver integration between the Maven Integration (M2E) and Eclipse WTP projects.

Description

The integration is done primarily by implementing extension points in M2E to listen to its Maven Configuration model changes and from that configure Eclipse WTP projects. There are also provided extensions for Eclipse WTP module component system to provide advanced functionality such as support for Maven Web resource filtering and War Overlay features.

The primary goal is to make the bridge as transparent as possible when you import Maven projects - secondary would be to make it easy when you create Eclipse projects to make them Maven projects.

Why Eclipse?

This proposal is at Eclipse because of a multitude of reasons:

  • Encourage and enable co-operation between M2E and WTP communities
  • Participate in release train
  • Be available in common repository (ease of access for users)
  • Be available in common issue tracker system (M2E and WTP use eclipse bugzilla)
  • Be included in future EPP packages
  • Ease of adoption due to the safety provided by the Eclipse IP due-diligence process

Not all of these will be possible at first (such as participate in release train), but over time all of these reasons will help improve the Maven support in Eclipse, especially for WTP backed projects.

Code Contribution

The work on these features is currently taking place inside the m2eclipse-wtp project. This project have, since it was introduced on Eclipse Marketplace in August 2011, always been in Top 6 of the most installed Eclipse plugins.

m2eclipse-wtp Wiki (with additional info links)

m2eclipse-wtp Source Repository

Origins of code

The original code for this project comes from the m2eclipse project which was contributed and maintained by Sonatype and eventually released under EPL at http://m2eclipse.sonatype.org/.

Fred Bricon’s first patch for initial support for EJB and EAR projects was applied in september 2008. He was soon after granted commit rights on the m2eclipse project and since september 2009 has been the primary contributor and maintainer of the WTP integration part of m2eclipse, mostly as an individual contributor, but also partly as a contractor for Sonatype (january/february 2009).

In May 2010, m2eclipse-wtp split from the m2eclipse core source base and started living a separate lifecycle from m2eclipse. Since November 2010, Fred is the designated project lead of m2eclipse-wtp.

When Sonatype brought m2eclipse to Eclipse, as M2E, in october 2010, they decided not to bring over m2eclipse-wtp mainly due to resource constraints and because it was considered not to be fully mature at the time. We believe that it is no longer the case.

Since April 1st, 2011, Fred has been working for Red Hat and continues to maintain and develop on m2eclipse-wtp under its EPL license via Sonatype’s contributor license agreement.

Committers

The following individuals are proposed as initial committers to the project:

Fred Bricon, Red Hat
Fred is the projet lead for the m2eclipse-wtp project and committer on m2e.
Snjezana Peco, Red Hat
Snjezana contributes to Maven functionality at JBoss Tools and Developer Studio and have contributed to both m2e and m2eclipse-wtp over the years.
Max Rydahl Andersen, Red Hat
Max is the project lead for JBoss Tools and Developer Studio which uses and extends M2E and m2eclipse-wtp. He has also been a long-time contributor to M2E's mailing lists.

Mentors

The following Architecture Council members will mentor this project:

  • Nick Boldt
  • Chuck Bridgham

Interested Parties

The following individuals, organizations, companies and projects have expressed interest in this project:

  • Chuck Bridgham (IBM)
  • Konstantin Komissarchik (Oracle)
  • Martin Lippert - VMWare, as part of Spring Source ToolSuite
  • Kaloyan Raev (SAP)
  • Neil Hauge - Oracle, Dali Project
  • Carl Anderson - WTP j2ee project committer, IBM
  • Chuck Bridgham -WTP j2ee project committer, IBM
  • Roberto Sanchez Herrera - WTP j2ee project comitter, IBM
  • Ian Trimble - Oracle
  • Werner Keil - UOMo Lead, Java EE 6/7 EG Member

Namespace

org.eclipse.m2e.wtp.*

Project Scheduling

The plan is to deliver support for Eclipse Maven and Web Tools Platform project as part of an Eclipse train as soon as possible. Juno is too soon, thus goal would be Juno + 1.

Changes to this Document

<-- -->
Date Change
2012-04-19 Mentors added.
2012-04-02 Added Werner Keil as interested party.
2012-01-25 Added VMWare, SAP and Oracle interested parties. More details about origins of code.
2012-03-22 Package name update and project placement.