Before we can answer why you need Nexus, first we must answer

Why do I need a Maven Repository Manager?

Repository managers serve two purposes: they act as highly configurable proxies between your organization and the public Maven repositories and they also provide an organization with a deployment destination for your internally generated artifacts.

Proxying a Maven repository brings a number of benefits. For starters, you are going to speed up builds throughout your organization by installing a local cache for all artifacts from the Central Maven repository. If a developer in your organization needs to download version 2.5 of the Spring Framework and you are using Nexus, the dependencies (and the dependency’s dependencies) only need to be downloaded from the remote repository once. With a high-speed connection to the Internet this might seem like a minor concern, but if you are constantly asking your developers to download hundreds of megabytes of third-party dependencies, the real cost savings are going to be the time it takes Maven to check for new versions of dependencies and to download dependencies. Serving Maven dependencies from a local repository can save you hundreds of requests over HTTP, and, in very large multi-project builds, this can shave minutes from a build.

In addition to the simple savings in time and bandwidth, a repository manager provides an organization with control over what is downloaded by Maven. You can specifically include or exclude certain artifacts from the public repository. Having control over what is downloaded from the central Maven repository is often a prerequisite for using Maven in most organizations which need to maintain very strict control over what dependencies are used throughout the organization. An organization which wants to standardize on a specific version of a dependency like Hibernate or Spring can enforce this standardization by only providing access to a specific version of an artifact in a repository manager. Other organizations might be concerned with making sure that every external dependency has a license compatible with the legal standards of that organization. If a corporation is producing a application which is distributed, they might want to make sure that no one inadvertently adds a dependency on a third-party library which is covered under the GPL license. Repository managers provide for the level of control that an organization needs to make sure that overall architecture and policy can be enforced.

Aside from the benefits of mediating access to remote repositories, a repository manager also provides something essential to full adoption of Maven. Unless you expect every member of your organization to download and build every single internal project, you will want to provide a mechanism for developers and departments to share both SNAPSHOT and releases for internal project artifacts. Nexus provides your organization with such a deployment target. Once you install Nexus, you can start using Maven to deploy snapshots and releases to a custom repository managed by Nexus.

Why Nexus?

  • Nexus is developed by the founder of Maven and several core Maven developers, we know Maven inside and out and can guarantee compatibility with current and future versions of Maven.
  • Nexus is developed by the maintainers of the Maven Central repository. We know best how Maven interacts with external repositories and how to best optimize that interaction to save bandwidth and increase build performance. What saves you time and money saves us time and money as it reduces the load on your connection at the same time as it reduces the load on Central.
  • Nexus pioneered the repository Index format that is now used by all Maven IDE integrations and is regularly updated on Central. Using Nexus guarantees complete compatibility with future versions and enhancements of the Index as they are rolled out.
  • Nexus is designed for high performance and a light footprint - meaning we don’t use complicated storage repositories or transport mechanisms.
  • Nexus stores your artifacts on disk in their native repository layout. This means:
    • you don’t need to be a DBA to setup and maintain your repository.
    • you can use normal backup and restoration techniques to archive your artifacts. The Maven repository layout in particular is well suited for incremental backups.
    • extra disk isn’t wasted for inefficient DB operations
    • extra memory isn’t wasted for unnecessary DB overhead
  • Nexus uses Apache Lucene for real time indexing and searching, no content repositories or databases are required.
  • Nexus is backed by full time developers, qa and support personnel. The Professional version of Nexus is built by repackaging additional commercial plugins on top of the OSS core. This means the OSS core undergoes the same level of QA that we provide for Pro.
  • Nexus is the only repository manager to support repository types other than Maven such as P2 and OBR (OSGI Bundle Repository)
  • Professional add-ons and Support are available for Nexus
  • Nexus has a rich plugin model to make it easy to extend. (remember our Professional products are built as plugins to the core, meaning the API is battle tested).
  • Nexus has the most robust and configurable security model of any repository manager.
  • You can see our code changes in real time at http://scm.sonatype.org

References