The Eclipse Integration for Apache Maven (IAM)
Introduction
The Eclipse Integration for Apache Maven (IAM) Project is a new project proposal under the Eclipse Technology Project.
This proposal is in the Project Proposal Phase (as defined in the Eclipse Development Process document) and is written to declare its intent and scope. This proposal is written to solicit additional participation and input from the Eclipse community. You are invited to comment on and/or join the project. Please send all feedback to the http://www.eclipse.org/newsportal/thread.php?group=eclipse.technology.iam newsgroup.
Background
Apache Maven is a very popular project comprehension tool, and rivals Apache Ant as the most widely used build system. While Eclipse has very good support for Apache Ant it does not provide any integration for Apache Maven out of the box or under the umbrella of the Eclipse Foundation, and users are not necessarily aware of third party integrations.
Apache Maven offers significant improvements in the overall speed and quality of software development. But because Apache Maven is designed to deliver real-time transparency regarding the state of any project, it helps to not only eliminate build process failures, it also enables organizations to control and protect against the inclusion of incompatible components during the earliest testing, integration and packaging phases of a typical development life cycle.
Through standardized and automated build processes, Apache Maven gives not only developers and build masters visibility into the which components are being used, but it also benefits anyone that needs information on the quality and characteristics of the applications being built.
The IAM project has already gone through several months of development under the codename Q4E , right now at version 0.6.1, creating a community of users and contributors that are really interested in seeing the project become a Eclipse Foundation project as that seems to be the natural place for it.
Scope
The objectives of the IAM project are to:
- Make Eclipse the IDE of choice for Apache Maven users
- Allow Eclipse users to explore the benefits of Apache Maven
- Tightly integrate with JDT
- Allow the user to create new Eclipse projects from Apache Maven Archetypes
- Launch Apache Maven builds from the standard Eclipse run configurations
- Provide the underlying libraries for Buckminster integration
- Explore the integration points with Equinox Provisioning repositories
Description
The current implementation of IAM is documented in http://code.google.com/p/q4e/wiki/DevelopmentGuide. The core library interacts with Apache Maven libraries and exposes an Eclipse style API, used by the Apache Maven specific user interface, like event or goal execution views, the JDT integration that will provide the user a consistent view between Apache Maven projects and any other project, and the Buckminster integration that will live at the Buckminster project.
Wizards for new project creation and import of existing Apache Maven projects are provided for a rich user experience as well as integration with other Eclipse projects like WTP or AspectJ. Supporting a wide range of eclipse plug-ins will serve as an exemplary solution for tool builders and prove the validity of the design.
As Apache Maven, IAM will be cross platform and vendor neutral providing extension points for other projects to reuse and extend it.
Organization
Mentors
The following people have agreed to mentor the project
- Ed Merks, IBM
- Thomas Watson, IBM
- Brett Porter, Exist Global
Initial committers
The initial committers will focus on evolving the current IAM implementation by delivering support for Java development. Our agile development process will follow eclipse.org's standards for openness and transparency Our goal is to provide the infrastructure and APIs needed to integrate task and degree-of-interest centric UIs to any Eclipse plug-ins whose users experience information overload. As such we will actively encourage contributions to Eclipse IAM. We also plan to help improve the Eclipse platform by submitting patches and extension point suggestions. The initial committers are:
- Abel Muiño, Berggi: Project Lead
- Carlos Sanchez, Exist Global
- Erle Mantos, Exist Global
- Jake Pezaro
- Michael Poindexter, Qumu
- Philip Dodds, Exist Global
- Brett Porter, Exist Global
- Allan Ramirez, Exist Global
Interested parties
The following projects have expressed interest using the tools, contributing ideas, guidance and discussion. Key contacts listed.
- Equinox (IBM): Jeff McAffer, Pascal Rapicault
- IONA: Oisin Hurley
- Apache Cocoon: Grzegorz Kossakowski
- Apache Archiva: Joakim Erdfelt
- University of A Coruña, Spain: Fernando Bellas
- CALGB: Robert Dale
- Scala: Josh Suereth, David Bernard
- Qumu, Inc.
Developer community
We expect to extend the initial set of committers by actively supporting a developer community. The initial community outside of Exist Global includes Abel Muiño, which is planning to extend IAM and use it as a foundation for its Appfuse Eclipse plugin (Candy for Appfuse).
We are also contributing the Apache Maven integration for Buckminster which will use the same underlying libraries jointly developed by IAM and Buckminster committers.
As its already happening with Buckminster we want to make the different pieces reusable for other projects that want to interact with Apache Maven by providing an API that will bridge the Eclipse and Apache Maven worlds, and facilitation other parties contributions by making our planning and processes accessible and transparent.
User community
IAM will improve the user experience for all previous Apache Maven users, which represent a big community. We need to integrate their feedback as it is critical to build an usable user interface. It will be achieved by leveraging the standard eclipse.org mechanisms of supporting an open project and the community.
Tentative Plan
2008-06 M1: Finalize WTP integration
2008-08 M2: PDE integration
2008-10 M3: SVN/CVS integration
2008-12 M4: P2 integration
2009-02 M5: Mylyn integration
2009-04 M6: Buckminster integration