Spring, Maven, and Nexus Best Practices

By

1 minute read time

Today, Keith Donald posted an entry about obtaining Spring 3 artifacts with Maven using the method of sourcing Maven repositories from inside POMs. I wanted to suggest an alternative for Spring users, which draws on the best practices we've developed over time with our enterprise clients doing large builds with a healthy number of developers on the team. Putting repositories in POMs generally looked dimly upon, and I consider it an anti-pattern for enterprise build and release. I won't go into the details here, but instead refer you to Brian Fox's blog entry on the matter.

The alternative I would suggest is to use a repository manager like Sonatype Nexus Repository and proxy the Spring repositories that you are interested in using. I would assume a team might be interested in releases, milestones, and snaphot repositories. So at Nexus OSS (now known as Sonatype Nexus Repository Community Edition) I setup the three Spring repositories as you see below.

You might want to use a single URL in your Maven settings to represent the set of Spring repositories, as you can see below.

Most organizations, though, end up having a single URL for developers, where all the repositories you might use are managed in a single location. Sonatype has some documentation in the Nexus book for configuring your developers to use a single group. This is usually the way large organizations manage their developers when working with Maven, but I just wanted to show how easy it is to create proxies and manage them together in groups with Nexus.

I know that most Spring users are Maven users, so I hope this helps get their Maven-based environments setup in a best-practices fashion.

Picture of Jason van Zyl

Written by Jason van Zyl

Jason is a co-founder and the former CTO of Sonatype.

Tags