In addition to managing and maintaining the Maven Central repository, I also serve as the administrator for two very large forge repositories: repository.apache.org and nexus.codehaus.org. This post is going to dive into the details of the best practices that I’ve developed to maintain these very large instances. I will focus on the configuration of Nexus in this post, but if you’re interested in system level details, those are documented here.
Both of these repositories have a few things in common that have driven the design:
- there are many disparate projects deploying artifacts that require fine grained access control per project
- release repositories are synced to central
- they are the most commonly used snapshot repositories in the maven ecosystem
- the majority of users are anonymously reading the snapshots
- they are transitional repositories that replace older static repositories
They also have a few things that are very different:
- Apache is a Solaris Zone
- Codehaus is an Ubuntu Jeos VM
- Apache is using httpd for reverse-proxying and ssl
- Codehaus is using Nginx for reverse-proxying and ssl
This post contains two sections, the first covers some system-wide Nexus configuration, the second contains details about adding individual projects, along with security and staging configuration. If you are setting up a public Maven repository, this post might give you some ideas about configuration and administration issues that you’ll need to think about.
Continue reading →