JBoss Switches to Nexus Professional


April 20, 2010 By Brian Fox

Over the weekend, the JBoss repository team put the final pieces in place to complete the switch to Nexus Pro. We’ve been working with them since early this year to perform analysis and tool support for the conversion. Their team performed very diligent testing of the entire system prior to the conversion. Kudos to Paul for such an orderly and thorough process. The timing of the production switch is great because we are nearly done helping to clean up the Java.net repositories.

Historically the JBoss and Java.net repositories have been painful for Maven users. The reasons for this pain differed in each case, but overall these repositories have affected a large section of the community because of the popularity of the artifacts they contain.

The JBoss repository generally had decent metadata and release practices.  The major concern in this repo was that the single repository contained artifacts in the following categories:
1) JBoss original artifacts
2) Copies of artifacts from other repositories
3) Artifacts with the same coordinates as artifacts in another repository, but that had been patched or otherwise altered

Ideally the repository should have contained only artifacts in category 1. Category 3 is what caused the most pain, because as soon as you pulled some artifacts from the JBoss repo, you potentially could get “polluted” with these altered artifacts.

We worked with the JBoss team to develop tools that could scan the repository, and categorize all the artifacts into the categories described above. Using that information, we where able to separate them into unique repositories in the new Nexus Pro repo, meaning now you can select which artifacts you want to include based on the url you use. Nexus’ ability to logically group repositories allows JBoss to merge these now separated repos back into a view that matches the old repo, making the migration transparent for existing users.

The problem with the java.net repo is more complicated. In addition to all of the problems described above, this repository suffers from a lack of oversight and quality. We found thousands of artifacts that referred to repositories that no longer existed, that contained snapshot dependencies, that weren’t in the proper folders, and so on. This problem has taken one of our developers almost a month to sort out, but it’s finally just about done. These artifacts will be synced into Central, and we are working with Oracle to prepare a Nexus Pro instance that can be the deployment location for these projects going forward.

In addition to the repository cleanup, the JBoss (and soon java.net) projects are now able to use the Staging and Promotion tools in Nexus Pro that are used in many other OSS forges like Apache, Codehaus, Scala-tools, and Terracotta. This allows developers to stage a release, have automated quality checks occur, and perform their voting and validation phase before promoting the artifacts to the public release repository. This process makes it dead simple to ensure that the basic quality of the releases is maintained.  This helps the entire community, which is why we make Nexus Pro available to OSS projects for free.

For projects that are too small, or otherwise don’t want to host their own instance of Nexus Pro, we maintain an instance at http://oss.sonatype.org.  Here, any OSS project can sign up (http://nexus.sonatype.org/oss-repository-hosting.html) and gain all the benefits of a managed repository, including dedicated Sonatype assistance with their builds. We have almost 400 projects using this instance, including Amazon Web Tools, Google App Engine, Google Inject, Jetty, and many more. Users of this system are able to get their releases published to Central in less than an hour, once they are configured to pass the automated quality checks.  It’s never been easier or faster for projects to release their artifacts to Central.

Based on the outstanding adoption rate of our tools in the community, it is clear that project development teams of all sizes really want to provide a quality product for their users in the form of clean artifacts and metadata. This just wasn’t easy to do in the past. Sonatype is making it a priority to empower these projects by providing first class tools and self-serve access to Central.

  • soma

    hooray :-)