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).
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.
So you'd recommend using Nexus to everybody using Maven? What problem does it solve?
Posted by Stefan F on March 06, 2009 at 02:04 AM MST #
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.
Posted by Paul G on March 06, 2009 at 02:29 AM MST #
Posted by Logan Hutchinson on March 06, 2009 at 03:11 AM MST #
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 #
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 #
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 #
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 #
Posted by Yoav Landman on March 10, 2009 at 10:43 AM MDT #
Posted by 18.104.22.168 on March 10, 2009 at 04:31 PM MDT #
Posted by Angel on March 10, 2009 at 10:56 PM MDT #