Sonatype Maven Meetup on March 19th & 20th


March 11, 2009 By Jason van Zyl

As part of Sonatype’s effort to keep the community informed about our work on Maven, Nexus, m2eclipse and Hudson we are planning to have a two day meetup in Mountain View at the Sonatype office on March 19th & 20th. The first day will be a set of presentations, and the second day will be hackathon for those that want to get more involved in the projects, just chat with some of the developers, or get help implementing their own solutions.

We will not only provide lunch for those who want to come out, but we’ll also be giving out licenses for Nexus Pro! One per organization which entitles you to all updates and support for a year. This is basically an extended trial as Nexus Pro is a per year subscription. Still, we think providing professional support and professional features for a year is a pretty good deal for a freebie.

We have a lot to cover in a couple days, but the general plan is to have many presentations ranging from 30 to 60 minutes on the first day and follow up with a hackathon on the second day where people can follow up with any questions and work through real examples. So we want to fill attendees with as much information as we can on the first day, let you sleep on it, and then come back the second day where there is enough time to have some meaningful discussions and do some real coding.

If you’re interested in attending please sign up so we can prepare for you!

The list of topics is as follows:

Maven 3.0: The Maven you will love (Even Howard Lewis Ship)

Even though Maven 3.x will have many new features, the primary push thus far has been to provide an architecturally extensible core that is fully compatible with Maven 2.x. We needed to revamp the code base so that we could add new features easily, but more importantly to have a code base that is comprehensible by a larger audience. All core components in Maven 3.x have been refined and in extreme cases completely replaced as was the case with Mercury displacing the artifact resolution code. The goal of first release in the 3.x line is to provide less mystery, better error reporting, more performance, better documentation, a viable replacement for 2.x, and a path for rapid feature addition. We feel that with the new code base we can eradicate all major issues with Maven inside 12 months. We have been adding en enormous amount of testing and we’re pretty confident that 2.x users will not have a problem moving forward.

There will be a discussion of the architecture in Maven 3.x, some thoughts about integrating the OSGi versioning strategy, possibly flipping the internal DI over to use Guice, and a summary of the potential new features. This is where talking to Maven users would be useful as it will help us prioritize what features get developed first.

Mercury: Bringing client-side artifact & repository management to the masses

Mercury is a complete rewrite of Maven artifact resolution code with an eye toward general use. Mercury has been a joint effort by Webtide and Sonatype. On the transport side the HTTP masters at Webtide have helped us create an async HTTP client with built in SSL and WebDAV capabilities along with transactional capabilities. As of this writing, we now have Mercury integrated into Maven 3.x and we’re now making sure out integration tests pass with Mercury as the default artifact resolution implementation. Mercury also has built in PGP capabilities and we have incorporated the SAT4J to provide robust version range support. Mercury will be the de facto standard for Maven but Mercury is a completely stand-alone library. We have already integrated Mercury into Nexus, the Mercury Ant Tasks, and prototype provisioning tools we have created for clients.

There will be a discussion of Mercury’s architecture, how it is being used in Maven and how it can easily be used in your own applications. We will also discuss the interesting possibilities of using Mercury to provision runtimes like JBoss and Equinox.

m2eclipse: Maven loves Eclipse and it goes both ways!

m2eclipse has become the standard way to integrate Maven with Eclipse and we’ve been working hard improve the testing and quality of m2eclipse as we move toward a 1.0. We have been very successful with our use of Instantiations Window Tester and we are rapidly building up a complete set of fully automated UI tests. This has been a huge undertaking but we felt that it was necessary in order to complete before forging ahead with new features. We have also been spending a lot of time stabilizing the internals and creating tighter integration with Maven to support incremental builds. This is not glamorous work but we felt the testing and performance enhancement work was necessary before attempting to make additions. There are still some very cool things available in m2eclipse today like the Nexus integration, Maven Archetype support, and POM refactoring.

There will be a discussion on some of the architectural changes, in particular the changes we have made in the Maven Plugin API to support incremental builds within Eclipse. This essentially boils down to making proper notifications to Eclipse so that it only does the work that is absolutely necessary as opposed to running the Maven lifecycle repeatedly inside Eclipse which has proven ineffective. We will also discuss how we can now tie the Eclipse Update manager to Nexus to provide one stop shopping for plugin provisioning.

We will also talk about our new integration for FlexBuilder which sports true bi-directional configuration management between your Maven projects and FlexBuilder. Import your FlexMojos project in m2eclipse and FlexBuilder is configured correctly. Change your FlexBuilder preferences and the changes are reflected back in your POM. With your Flex projects there will be no more synchronization problems between automated builds and your developer environments.

Nexus: The only Repository Manager you’ll ever need

Nexus is the de facto standard for Maven repository management. Nexus technology has been integrated into Netbeans, IDEA, and Eclipse to provide seamless integration with Nexus and therefore all the artifacts you need to work with your projects. Many Open Source organizations, like Apache and XWiki, are now running Nexus Pro to help their projects using Maven manage their Maven repositories in addition to making staging and promoting releases a breeze.

There will be a discussion of the existing features along with some of cool new features in Nexus like Maven Central mirror support, incremental index support, managed P2 repository support, and Maven settings.xml provisioning. Nexus is evolving quickly and can now internally handle very different types of repositories. In addition to Maven and P2 repositories we are also looking at adding support for GEM repositories. There will also be a discussion of Nexus’ roadmap leading up to the 2.0 release.

Tycho: The future of Maven & OSGi

Tycho is our automated build solution for Eclipse plugins and OSGi bundles. Tycho is targeted not only at Maven developers who prefer to use POMs, but die hard Eclipse/OSGi developers who want to build existing projects using MANIFEST.MF files. Tycho integrates with the Nexus P2 repository support to provide a turnkey solution for round trip OSGi development. You can build your OSGi bundles with Tycho, publish them to a Nexus P2 repository, and then consume the artifacts from Nexus using Tycho, the Eclipse Update Manager, or any P2 client.

The discussion of Tycho will be centered around a demo (one that we will be showing people at EclipseCon) where we build m2eclipse with Tycho, publish the result to a hosted P2 repository in Nexus and then create a P2 repository group which aggregates a proxy of the Ganymede site, a proxy of the Subclipse site, a custom FlexBuilder site we created, and our own m2eclipse site. We then take a bare Eclipse 3.4.2 install, setup a single URL with the Update Manager and from that single URL all the features in all the proxied and hosted repositories are made visible to the Update Manager. Dead simple Eclipse setups for your developers. You can now manage all your Maven repositories along with all the Eclipse Up
date Sites — proxied or hosted! — from one Nexus installation!

There is also a bit more information about Tycho in this blog post.

Hudson: Sonatype’s effort to mesh Maven & Hudson

The summary of our Hudson work is pretty much summarized in this blog post.

We will also have Kohsuke Kowaguchi here with us for the hackathon where I hope we can hack out a design for a quality reporting solution that will work for Maven and Hudson.

Sonatype Flex Plugins

FlexMojos is our automated build solution for Flex applications. We have just finished our 3.0 release of the FlexMojos (which we need to document before we officially announce) which was specifically refactored to work with the FlexBuilder integration we have created for m2eclipse.

We’ll have brief discussion about some of the new features we’ve added to FlexMojos like the Flex SDK publishing utility and the integration testing capabilities using Emma.

Android, Emma, NMaven, Byldan & NAR

We also have a slew of other tools that we’ve been working on that we want to talk about. We have an Android plugin for Maven to help build and deploy your Android apps, some nice additions to the Emma plugin especially for integration testing, NMaven for .NET and Byldan which is a C# version of Maven and the Stanford Linear Accelerator Center (SLAC) has donated the NAR Plugin to Sonatype so now we have sweet C/++ capabilities.

So that covers all the technical bits that we’ll be talking about. Mark de Visser, the CEO of Sonatype, also wants to have some sessions for the business folks. Some of the topics might include the procurement of commercial software from Maven repositories using Nexus Pro, providing secure channels of certified Open Source artifacts, what certification actually means, and dealing with legal compliance issues.

If you’re interested in attending please sign up so we can prepare for you!