Tuesday, October 14, 2008

Repeatable Maven Builds

A typical problem folks have with Maven seems to be getting repeatable builds. If you've encountered this, you know the pain: an older release needs to be built but now fails with the dreaded "Failed to resolve artifact" error. You can't really depend on most Maven repos to be there indefinitely. I'm sure repos like http://repo1.maven.org are pretty safe but AFAIK the maintainers are under no legal obligation to keep around the artifacts forever. You most likely DO have obligations to customers and thus need to ensure builds are repeatable.

You get repeatability for free when you use a repository manager like Nexus - it keeps downloaded artifacts around forever by default. If you don't want to use a repository manager, you're going to have to save those artifacts some other (manual) way. One approach would be to just tar up your local m2 repo after each release and store it somewhere safe (like in SVN). Of course, since local repos tend to get huge over time, you should always start from an empty local repo before a release.

Hope this helps.

No comments: