Maven IDE: The year of Maven & Eclipse


January 10, 2011 By Jason van Zyl

There are many things we would like to see accomplished in the Apache Maven ecosystem in 2011 but one of the most important, we feel, is the sound integration of Maven with Eclipse. A great deal of effort was spent bringing Maven 3.x up to the level where it can be leveraged for an effective integration with Eclipse. With Maven 3.0 released in 2010 we are in a position to focus on the Eclipse side of the equation. For those you who watch the M2Eclipse JIRA you can see a great deal of activity and that’s because Sonatype’s M2Eclipse team is [doing for M2Eclipse][m2e1] what Sonatype’s Maven team did for Maven 3.0. Sonatype is working on the internal architecture of M2Eclipse, adding tests, and preparing the path forward which means the integration of Maven with the rest of the Eclipse ecosystem.

Sonatype is investing heavily to ensure the baseline M2Eclipse 1.0 is of high quality, stable, and maintainable. With the help of the amazing IP team at the Eclipse Foundation M2Eclipse has passed its initial IP review, has entered the parallel IP process and is slated to be [released as part of the 2011 Indigo release of Eclipse][m2e2]. To be certain, this will be a great milestone for the Maven and Eclipse ecosystems: users have been asking for years to have good Maven integration included in the standard Eclipse distributions and this will be the year they get it. Indigo will ship this year on June 22nd, but in the meantime Sonatype will be working on and soon releasing Maven IDE!

MavenIDE.png

What is Maven IDE exactly? Maven IDE is a Maven-focused distribution of Eclipse that will consist of a base Eclipse distribution, M2Eclipse and a series of Maven-focused integrations where there is strong support within the Maven and Eclipse ecosystems. What are some of the things we are looking at potentially integrating?

## Frameworks and languages

JSR-330 & Guice integration: JSR-330 & Guice are now critical to the Maven ecosystem and very important to Sonatype as a technology. The JSR-330 implementation provided by Guice provides core functionality for Maven 3.x, Nexus, M2Eclipse, and Sonatype’s Maven 3.x integration for Hudson. We will create tooling for JSR-330 to help with our own work, general integration work for development infrastructures, and anyone using JSR-330.

Webapp development tooling: Webapp development is the most requested form of integration and we are still evaluating what’s available in WTP versus making something that is simpler and integrates more tightly with Maven. For those that don’t know, the WTP integration for M2Eclipse is not part of the codebase that moved to Eclipse. Sonatype will be working with the community on the M2Eclipse/WTP integration and will help distribute it from Sonatype, but we are also looking at alternatives to WTP.

Tycho integration: We already have support for Tycho inside Eclipse that allows Tycho projects to interoperate with PDE at a rudimentary level, but we would like to improve this integration and bring support for Tycho-based projects into the Eclipse IDE.

Maven Shell integration: This is where the Maven command line will intersect with the IDE. We see in the future being JSR-330 component based so we can leverage them from the Maven Shell and Maven IDE, and these components will participate in long-lived workflows that aid in the development of applications. We plan to use Drools Flow for the workflow implementation and the Eclipse tooling that exists for Drools Flow. The workflows will be accessible and usable from the Maven Shell as well as from within Maven IDE.

Polyglot Maven integration: For some of the selected grammars and dialects of Polyglot Maven we will provide support in Maven IDE. The folks at Itemis have been a great in helping us understand how Xtext can play a critical role in this regard. If a grammar can be represented in a form that Xtext understands then much of the plumbing for powerful editors can be created automatically using the Xtext framework. There are currently some integration issues between standard Maven and OSGi that need to be resolved but Xtext is an incredibly powerful language workbench. The Itemis guys have really done some incredible work.

Android development tooling: Android is becoming very popular and has a strong Maven contingent. There are sophisticated Maven-based tools for developing Android apps that have been created by Android community: the [maven-android-plugin][android1] by Hugo Josefson from [Jayway][3], the Eclipse integration exists as part of what Google provides, and Ricardo Gladwell has created the bridge between Maven and Eclipse with his [Android M2Eclipse integration][android2].

Scala IDE: Miles Sabin is creating great Eclipse integration for Scala with his [Scala IDE][2] project and David Bernard is bridging that work into Maven [m2eclipse-scala][1]. We are seeing a lot of demand for Scala integration with Maven.

GWT integration: GWT has rapidly become one of the standard webapp toolkits for Java and we’ve seen a lot of demand for better integration with M2Eclipse. Within the realm of development infrastructure GWT is very popular. Sonar uses GWT, Gerrit uses GWT, XWiki uses GWT, and Sonatype has chosen GWT as the basis of the UI for our Maven 3.x integration in Hudson. GWT will continue to gain momentum so it’s very likely we will have more sophisticated integration with M2Eclipse sooner rather then later.

## Development infrastructure

Sonar integration: Sonar is becoming the de facto standard reporting and quality system for Java projects. Sonar is very Maven-centric and SonarSource has provided Eclipse integration that can easily be integrated with Maven IDE.

Hudson integration: Hudson is the de facto standard continuous integration server for Java projects. Sonatype is currently working on finishing our Maven 3.x integration and it will be integrated within Maven IDE.

Wiki editing & site publishing: Sonatype has a wiki page editing and publishing framework called Idiom — that is based on the WikiModel project — that we will be open sourcing, and hopefully merging with the tools that exist in the WikiText project at Eclipse. Ultimately we would like to see WikiModel merged with WikiText and then work together within the community to make great editing tools. If WikiModel could be wed with Xtext it would be amazing.

SVN integration: Obviously important and we initially removed the SVN support to clean up and focus on the core. We’re layering it back in as resources permit. It’s not going anywhere and there are actually two options now. Sonatype supports the Subversive integration which is the official SVN integration at Eclipse, but the community has contributed the Subclipse support. So both variants will be available and Maven IDE will ship with the Java-based SVNKit connector.

Git integration: Git is sweeping over the development community and has taken off like wildfire. At Sonatype we use Git for the vast majority of our projects so great Git integration with Eclilpse and Maven is vital.

Maven Central statistics and metadata: Many OSS projects have been thrilled with the statistics we’ve provided them and we’ll be working in the future to provide more value from the information in Maven Central and deliver it into Maven IDE. Maven Central is an unparalleled source of interesting and useful information for developers and we want to make all that information more accessible.

So you can see that the number of paths we can potentially take are limitless. What will really help us limit our choices are the partners we find who are as committed as we are to the Maven and Eclipse ecosystems. We’re not interested in individuals, groups, or organizations that are hedging their bets with Maven and Eclipse. We are looking for individuals, groups, and organizations who are committed to the Eclipse Platform and Maven as the basis of their development infrastructures.

Things we’ll be looking for in integration partners, are: Tycho build, good test infrastructure, and a composite p2 repository for integration. Maven IDE will first be available in an OSS community edition and will be followed by future commercial versions. We are excited about building out a polished, Maven-focused distribution of Eclipse and we’re really looking for feedback from the community about what integrations to pursue first. So please let us know!

Apache and Apache Maven are trademarks of the Apache Software Foundation. Maven Central is a service mark of Sonatype, Inc. Nexus, Maven IDE, Maven Shell, and Polyglot Maven are trademarks of Sonatype, Inc. Maven Central, Maven IDE, Maven Shell, and Polyglot Maven are intended to complement Apache Maven and should not be confused with Apache Maven.

[1]: https://github.com/sonatype/m2eclipse-scala
[2]: http://www.assembla.com/wiki/show/scala-ide
[3]: http://www.jayway.com/
[m2e1]: http://www.sonatype.com/people/2010/11/m2e-0-12-release-and-the-future-of-m2e/
[m2e2]: http://www.sonatype.com/people/2010/12/m2e-at-eclipse-what-will-this-mean-for-you/
[android1]: http://code.google.com/p/maven-android-plugin/
[android2]: http://code.google.com/a/eclipselabs.org/p/m2eclipse-android-integration/

  • http://legege.com/ legege

    Maven IDE will definitely rock. Keep your good work!

  • http://twitter.com/unludo Ludovic Havet

    Very promising!
    Regarding GWT, I personally found difficult (hmm in fact impossible) to have maven-GWT-Tomcat-eclipse-WTP to integrate nicely. Is this something we can look forward to when you are talking about ‘GWT integration’?
    kudo for your excellent tools ;-)

    • Jason van Zyl

      Yes, seamless integration with GWT is what we’re talking about. Whatever work needs to be done on the Maven plugins side, helping patch whatever is necessary on the Eclipse side and we would be working on the bridging of Maven to Eclipse within M2E.

      • http://twitter.com/arthur_kalm Arthur

        That’s really great news! I’ve found the Maven plugin does work for the most part, but integrating with the Eclipse side isn’t great. Really looking forward to this. Thanks!

  • John

    How will products that use WTP integrate with maven IDE which will not? Are you setting up two different web application development toolsets here? For example, jboss tools integrates to WTP. Will it be possible to use maven ide and jboss tools plugins together?

    I’ve found m2eclipse very useful. I like the pom editor and especially the dependency hierarchy tab which makes it easy to resolve dependency problems. I like maven project import, maven project create wizard and add dependency wizard. I’m excited that you are pulling sonatype and eclipse experts together for a release in june. I wish I didn’t have to wait so long. :)

    • Jason van Zyl

      It will be up to third party vendors to make sure their integrations work. For example it will be JBoss who has to ensure the M2Eclipse works with JBoss tools. At an OSS level it’s impossible for us to ensure the sanity of all third party integrations. This is why Sonatype is looking for partners for Maven IDE. It will be no small task to make all these tools work well together.

      • maxandersen

        supporting WTP would be a good step ;) i.e. our “integration” with M2eclipse is actually the simplest part for now (i.e. enablement of features based of dependencies present in project pom).

        The hard part is the project structure + deployment/packaging + server start/stop that WTP provides API/ui for.

        I hope the MavenIDE (which I assume will be partially closedsource distribution ?) will support WTP packaging to be as open to existing integrations as possible.

        We (Red Hat) is bringing on Fred Bricon (m2eclipse WTP maintainer) to help make the divide smaller within the Eclipse.org based distributions at least.

        • Jason van Zyl

          Until we use WTP ourselves for our own work at Sonatype (which is not likely to happen), or we have a product we need to support, like JBoss Tools, then we don’t have much practical reason to work on it. We will facilitate others working on it though. We’ve tried to help Fred as much as we can and we’ll continue to. But it’s hard not being users of WTP to attempt to support it. Just doesn’t make much practical sense.

  • Michael

    Why is is product still called M2Eclipse? It should be called MvnEclipse or something without a version number in it.

  • Holger Staudacher

    Do you plan the Maven IDE as an EPP Package? I think it should be one because from my point of view it’s just a basic Eclipse with some Plug-Ins or am I wrong? Thanks in advance.

    • sonatype

      We are just using a standard product build, and we are using Tycho to create the distributions. We want to use our Maven-based technologies to create our distributions. So if that’s possible within EPP it would be great to have Maven IDE be a standard EPP distribution.

  • http://twitter.com/nrichand Nathaniel Richand

    Do you plan a solution to auto configure Eclipse settings based on pom? We could do this in the past with additionalConfig in maven-eclipse-plugin. I can’t find a good alternative on M2Eclipse.

    Thx for the good work.

  • http://twitter.com/simpligility Manfred Moser

    Thanks a lot for including Android and the usage of the Maven Android tool chain in the project. I know that a lot of members of the Maven Android community are excited about this.

  • http://openid-provider.appspot.com/kris.hofmans Kris Hofmans

    Native maven project file support please …

    Mvn eclipse:eclipse is nice, but still very annoying since there are out-of-sync periodes where your eclipse project file wasnt regenerated, and now we have to add all that extra bulk to the svn ignore, something we would like to avoid in a multi ide team. Netbeans and intellij have it, why not eclipse?

  • niko

    I would help to develop at Maven IDE, how can I do that? What can I do ?

    • Jason van Zyl

      The first release will be the OSS version, and it will be in a Github repository. Look for it in the next couple weeks. The JIRA project has been setup: https://issues.sonatype.org/browse/MAVENIDE

      I’ll post more when the mailing lists and wiki are up.

  • Gumnaam Sur

    Why do things have to be so complicated in the Eclipse world ?
    Look how easy it is to use Maven in Netbeans, and I have been doing it for past 3 years. Welcome to 2007 eclipse.

  • http://twitter.com/plugtreelabs PlugTree Labs

    We Plugtree would like to help with the Drools Flow (now jBPM5) integration!