Nexus is a kick-ass Repository Manager

I started my current gig at the end of last year. I've been enjoying the work and especially the project infrastructure we've been using. We're using the usual suspects: JIRA, Confluence, Hudson and Subversion. We're also using a couple new ones, namely sventon and Nexus. For building, we're using Maven and Ivy (as a Grails plugin).

Nexus I'm writing this post to talk about Nexus and how much I've enjoyed using it. I like Nexus for two reasons: it's aesthetically pleasing and it's well-documented. Another reason I really dig it is because I haven't had to touch it since I first configured it. Software that just keeps on humming is always fun to work with.

Initially, I remember having some issues setting up repositories. I also remember solving them after learning how groups work.

In addition to on-the-job, I've started to use Nexus more and more in my open source life. With the help of Jason van Zyl, I recently moved AppFuse's repository to Sonatype's oss.sonatype.org. I also noticed there's a Nexus instance for Apache projects. If that's not enough, you can get Nexus Pro free if you're an open source project.

Personally, the open source version of Nexus seems good enough for me. While the Staging Suite looks nice, I think it's possible to do a lot of similar things with good communication. After all, it's not going to free you from having to wrestle with the maven-release-plugin.

Next week, I'm helping to polish and document our entire release process (from dev → qa → production). If you have any advice on how to best perform releases with Maven, Grails and/or Nexus, I'd love to hear about it. My goal is extreme efficiency so releases can be done very quickly and with minimal effort.

Posted in Java at Mar 05 2009, 11:59:02 PM MST 13 Comments
Comments:

So you'd recommend using Nexus to everybody using Maven? What problem does it solve?

Cheers, Stefan

Posted by Stefan F on March 06, 2009 at 02:04 AM MST #

Matt,

Have you seen the open source product called Sonar http://sonar.codehaus.org/?

We have just started using it and it is great really helps focus one the bad code to review and refactor.

Cheers
Paul

Posted by Paul G on March 06, 2009 at 02:29 AM MST #

Do you have experience with Artifactory? How does Nexus compare?

Posted by Logan Hutchinson on March 06, 2009 at 03:11 AM MST #

@Logan I was going to ask the same thing. We run Artifactory and was curious what the differences might be. Just from the Nexus homepage it looks like Artifactory has LDAP and inclusion/exclusion rules already in it while you need Nexus Professional for that. Nexus on the other hand has SNAPSHOT cleanup. JCR storage vs. file system storage. Either way Maven repository proxy/caching has come a long way since Proximity first came out.

Posted by Steve Brunton on March 06, 2009 at 08:02 AM MST #

@Stefan - I believe it's good to have some sort of internal repository in order to publish company artifacts (that you don't want to share with the outside world). I used file-based Apache for years, but that doesn't give you any searching abilities.

@Paul - Sonar looks very cool. Can Sonar help with code reviews like Crucible?

@Logan - I looked at Artifactory a couple of years ago. I'm sure it's much better now. Notice my comments about Archiva as well. ;-)

Posted by Matt Raible on March 06, 2009 at 09:02 AM MST #

Hi Matt,

I think you should give staging a try before you decide to live without it...because once you do I think you'll be hooked. It really is a great buffer between the build and the release repository. Yes, you still currently use the release plugin (or straight up deploy) but now you have a chance to inspect the product of the build before it hits the release repo and becomes immutable. The staging makes it possible to deploy over and over again without any harm to the final release repository. Since you point your distribution management section at the stating url, you have no possibility of accidentally deploying something.

Since we started using this on the Maven project, it eliminates my anxiety of publishing a release. Previously i had to make sure i override the correct property so the release was deployed to my personal apache folder. If i didn't get it right, or changed it for some other reason, then artifacts could leak to the release repo. Additionally, if an issue was found in a release, then a bunch of manual steps where required to delete the old folder and start over. Then you got to wrestle with the stage:copy goal which was russian roulette.

The Maven developer release docs provide a good overview of how the process works with Staging. (the steps and screens have been simplified in 1.3, which will be out any day) http://maven.apache.org/developers/release/releasing.html

Posted by Brian Fox on March 06, 2009 at 10:13 AM MST #

@Brian - you make staging sound pretty sweet. Is it possible to install the Staging plugin in our open source instance (version 1.2.0.4)? If I can get it installed on a trial (free) basis to prove it's useful to my client, I could probably convince them to buy a license.

Posted by Matt Raible on March 06, 2009 at 12:14 PM MST #

Matt, the Pro is a new bundle, but it is essentially the 1.2.1 core with the new plugins bundled along side. You can get a copy for trial purposes on the site: http://www.sonatype.com/products/downloads

Also note that 1.3 is almost out and the staging ui is significantly enhanced.

Posted by Brian Fox on March 06, 2009 at 02:55 PM MST #

I'm a big fan of artifactory. I installed it two years ago and I haven't touched it since. It just rocks along.

Posted by Mike on March 07, 2009 at 07:54 PM MST #

I've had it on the cards to change to Nexus for some time. Artifactory has been ok for us, but we find that we have to randomly restart 2 or 3 times a month. Things stop working, and the web interface starts playing up, a quick restart always sorts the problem.

I actually installed Nexus last year, and found it better in my testing, but I never got round to switching to using it throughout all our projects as I had a new virtual build server planned - unfortunately this has turned into one of those things which has never yet bubbled to the top of the to-do list.

Posted by Roy on March 09, 2009 at 02:37 AM MDT #

@Roy - If you are still running the 1.x generation of artifactory, you might have been bitten by this old bug (you just have to create the Jetty work dir to get around it). Upgrading to 2.x will fix that + will give you many new features and better overall experience.

Posted by Yoav Landman on March 10, 2009 at 10:43 AM MDT #

I have been using Artifactory for the past 3 years and it is simply a great product. It simply does it's job and keeps a low profile. I haven't looked at Nexus yet but now I am curious to compare it to Artifactory. To this point I haven't had a reason to look elsewhere.

Posted by 67.86.131.247 on March 10, 2009 at 04:31 PM MDT #

We have been using Nexus 1.x.x for 6 months and we are very happy with it. I have had previous bad experiences with Archiva, but with Nexus everything is working fine since the first second I deployed it. Very well documented too.

Posted by Angel on March 10, 2009 at 10:56 PM MDT #

Post a Comment:
  • HTML Syntax: Allowed