Comprehensive Project Intelligence – Apache Maven, Nexus, and m2eclipse
Many view Apache Maven in the context of other build tools such as Apache Ant and Apache Ivy, yet Maven's functionalities extend far beyond the efficient, enterprise-class project build. When coupled with supporting tools like Nexus and m2eclipse, Maven starts to accelerate development by reducing the level of work required to support build management and cross-department collaboration.
In this talk, Jason van Zyl, founder of Sonatype and creator of Maven's Central Repository, will present a constellation of open-source software which can be used to extend Maven's capabilities, from next-generation Eclipse support provided by m2eclipse to the Nexus Repository manager and continuous integration servers which offer Maven support. Jason will also introduce some of the more unexpected uses of Maven to support development with Flex and to support the publishing industry.
Jason did not disappoint. He not only showed Nexus running and its integration within Eclipse, but also the m2eclipse plugin (maven integration); Idiom, a template consumer for site documentation (think a better maven-site-plugin to start with); and another project (I can't recall the name right now) that lets you build OSGi bundles in the command line, that is right, no need to mess up with a running IDE, how cool is that?
Personally I really like the new level of integration between Maven and Eclipse. I use them both most of the times in my projects, keeping project dependencies in sync is always a hassle, but m2eclipse gets rid of all the cruft. Jason mentioned that one of the goals of the project is configure a maven enabled project without having to actually look at the POM in its XML form. Can't wait to test it.
Nexus looks also very promising, it may work as a proxy for all your repos in your organization, users just have to point to the the Nexus server. It also has a cool feature called routing tables. Think for a moment of that useful open source project you app depends on. You found a bug but the project's team can't/won't react as fast as needed, so you go with patch it yourself and run with the same groupId and versionId as you do not want to update the poms. It works, but it may break other teams in your organizations. So what routing tables do is filter out specific artifacts from specific sites, you may configure Nexus to serve all org.apache.commons artifacts from the official Apache commons repo and nothing else, leaving any in-house patches out of the equation. Definitely worth exploring.
Thanks to Jason for a great talk, Mike and Kevin for organizing the event and Google for hosting.
On a related note I met again with Sven Haiges (@hansamann) and recorded an interview for the Grails podcast. Though we talked shortly about Grails, he made me realize there may be a Grails plugin based on Json-lib. Good times.
Oh and another thing, Aaron Houston kick started the meeting by announcing that Mike is a brand new Java Community Champion, congrats!