Brett Porter

Updated Multi-module Support for Maven Release Plugin

January 29, 2010 · Leave a Comment

Last week Dennis started things moving to have another release of the Maven Release Plugin. The release process should start very soon, so please join us on dev@maven.apache.org to help test it!

This is certainly a nice one to have out the door, not only because of the length of time since the last release but because it fixes some important bugs (Subversion 1.6 support for starters), and improves multi-module support.

Having been bitten by the latter category myself very recently I took the opportunity to get a couple of changes in.

Support for flat directory multi-module projects

This highly requested support was actually added by Deng way back in May last year, but it was only recently that I started using the new version of the plugin and discovered a small corner case I jumped in and made a couple of improvements and fixes.

While I would always recommend using a typical hierarchical Maven multi-module project, there are a number of existing projects using the flat structure, particularly in non-Java environments. It’s good that the release plugin can now support anything with a common trunk.

This means that projects like the following will now release correctly (run from the parent directory):

.
|-- release-parent
|   `-- pom.xml
|-- release-module2
|   `-- pom.xml
`-- release-module1
    `-- pom.xml

Not requiring artifacts to be in the local repository before releasing

This controversial issue has popped up a number of times and proven to be a real nuisance in releases, where a multi-module project needed to be built locally before it can be released (including the preparation test, that makes 3 full builds!), or at best spouted a large number of warnings about missing dependencies on the artifacts it was yet to build.

In the end here we decided to revert to the original behaviour and accept the limitations that came with, while making the typical release faster and easier. The release:prepare-with-pom goal has been added to cater to the use case for which the dependency resolution was put in place originally. With this intended to be the 2.0 release of the plugin, we can stick to this behaviour going forward.

In the future, Maven 3.0 has added additional capabilities for plugins to operate with their modules without building them first, which will allow a unified and enhanced release:prepare goal once more, but in the mean time we’ve opted to put in place the best solution for the majority of Maven users today.

→ Leave a CommentCategories: Java · Maven
Tagged: , , , , , ,

Apache Archiva 1.3 release and what’s next

January 29, 2010 · Leave a Comment

In the midst of a busy couple of weeks, I neglected to post about the Archiva 1.3 release that was announced recently (and on that topic, Continuum has posted a new beta release as well).

The Archiva release focused mostly on bugfixes (particularly for indexing and LDAP), but we decided it was worthy of a version bump after the addition of an upload audit logging feature and some decent performance improvements. It’s an easy upgrade for 1.2 users – if you keep your configuration separate, then just unzip the new version and start it up using the same environment variables as you would the previous version.

Archiva is also easy to try out if you already have a Maven repository – its primary storage is the filesystem in a Maven repository format, so you can point it at a copy and everything will be available straight away (gradually indexing resources for access through the UI in the background).

As for what’s next – while it’s still to be put to vote, I hope that the next version will be based on the work I started again last year and have had in mind since almost the beginning of the project. This focuses on two underlying aspects: the removal of the archiva database requirement and the transformation to be an extensible metadata repository.

I always refer to the database removal as “Back to the Future”, since it is similar to the design pre-1.0 where Lucene was used to store all of the information, however in this case I had the opportunity to learn from our experiences and build on a more appropriate foundation:

  • A central, extensible metadata model that allows storage of any different repository , artifact, or resource type;
  • Delegating repository requests, to better facilitate repository grouping and proxying when configured, and to allow metadata to be regenerated from the storage on the fly;
  • Decomposing functionality into plugins so that optional portions can be removed. Plugins operate on metadata, certain repository events and a few other extension points. This remains a work in progress, but the aim is to allow reducing the deployable application to as little as a simple maven proxy cache for your local machine with a very low footprint, and to make it easy and robust to write and use a combination of different plugins.

At the moment, these changes are all under the hood – apart from configuration there is no visible difference other than the number of bugs that got removed along the way! However, the decoupling will make way for easier development of new features and the opportunity for much needed advances in the UI.

→ Leave a CommentCategories: Archiva
Tagged: , ,

Free Maven Meetup at ApacheCon US

October 29, 2009 · 1 Comment

A few Maven committers are going to be at ApacheCon US in Oakland next week, and we’ve organised for a free user and developer meetup as part of the conference schedule. It’ll be held on Tuesday, November 3, at 8pm.

Brian has posted a short signup page, so if you’re planning to come along, please add your name there. You might also want to talk about a particular subject for 15 minutes and add it to the proposed agenda.

There’s still time to sign up for my Maven training course on Monday, November 2 as well, which you can do from the main conference registration page.

Looking forward to seeing you all there!

→ 1 CommentCategories: Syndicated

Better Builds with Maven now available to read online

October 15, 2009 · 2 Comments

Better Builds with Maven has been available for a few years now, initially to those who registered on the web site and then available as a freely downloadable PDF. However, now it is finally available to read online as HTML, bookmark, etc. (in addition to the PDF download). It has also been relicensed under a Creative Commons license.

While the book is now somewhat dated and there are newer alternatives available, the information is still relevant. It has had minor updates as it moved homes several times over the last few years.

I hope you find this useful!

→ 2 CommentsCategories: Continuum · MaestroDev · Maven · Syndicated
Tagged:

Maven training in Oakland, November 2

October 13, 2009 · Leave a Comment

As I’ve blogged previously, I’m gearing up again to present my training session Apache Maven: End-to-end at ApacheCon US in Oakland in just a few weeks now. There are still spots available, so go ahead and register from the ApacheCon US site. Noirin offers some tips on how to justify ApacheCon to your boss.

The training session is hands on – all of the software and material is distributed on CDs and we spend some time digging into Maven and development infrastructure in a variety of ways.

Apart from the standard training material, there is the opportunity to work through some specific questions for your environment if it is something that interests the whole group, and of course those discussions can be continued over the rest of the time at the conference.

Hope to see you there!

→ Leave a CommentCategories: Apache · Archiva · Continuum · Maven
Tagged: ,