Repository Management with Nexus


1.2. Nexus OSS

Nexus OSS provides you with an essential level of control over the external repositories you use and the internal repositories you create. It provides infrastructure and services for organizations that use repository managers to obtain and deliver software. If you create software libraries or applications for your end users, you can use Nexus OSS to distribute your software. If your software depends on open source software components, you can cache software components from remote repositories.

1.2.1. Nexus OSS Features

Hosting Repositories
When you host a repository with Nexus OSS, you can upload components using the Nexus interface, or you can deploy components to hosted repositories using a build tool. Nexus will also create the standard Nexus Index for all of your hosted repositories, which will allow tools to rapidly locate software components for your developers.
Proxy Remote Repositories
When you proxy a remote repository with Nexus OSS, you can control all aspects of the connection to a remote repository, including security parameters, and HTTP proxy settings. You can configure how long Nexus will store components, and how it will expire components which are no longer referenced by your build.
Repository Groups
Grouping repositories allows you to consolidate multiple repositories into a single URL. This makes configuring your development environment very easy. All of your developers can point to a single repository group URL, and if anyone ever needs a custom remote repository added to the group, you can do this in a central location without having to modify every developer’s workstation.
Numerous Repository Formats
The concepts of hosted repositories, proxy repositories and repository groups are supported for a number of repository formats such as Maven 2, NuGet, NPM, RubyGems or YUM. This allows you to facilitate one Nexus server to bring the same advantages to all developers in a team relying on different technologies and build tools including Apache Maven, Apache Ant with Apache Ivy or Eclipse Aether, Gradle, SBT, .Net, Node.js, Ruby and many others.
Hosting Project Web Sites
Nexus is a publishing destination for project web sites. While you very easily generate a project web site with Maven, without Nexus, you will need to set up a WebDAV server and configure both your web server and build with the appropriate security credentials. With Nexus, you can deploy your project’s web site to the same infrastructure that hosts the project’s build output. This single destination for binaries and documentation helps to minimize the number of moving parts in your development environment.
Fine-grained Security Model
Nexus OSS ships with a very capable and customizable security framework that can be used to configure user interface as well as component access. Every operation in Nexus is associated with a privilege, and privileges can be combined into standard Nexus roles. Users can then be assigned both individual privileges and roles that can be applied globally or at a fine-grained level. You can create custom administrative roles that limit certain repository actions, such as deployment to specific groups of developers, and you can use these security roles to model the structure of your organization.
Flexible LDAP Integration
If your organization uses an LDAP server, Nexus can integrate with an external authentication and access control system. Nexus is smart enough to be able to automatically map LDAP groups to the appropriate Nexus roles, and it also provides a very flexible facility for mapping existing users and existing roles to Nexus roles.
Component Search
Nexus OSS provides an intuitive search feature which allows you to search for software components by identifiers, such as groupId, artifactId, version, classifier, and packaging, names of classes contained in Java archives, keywords, and component sha1 checksums. In addition Nexus can automatically download the index from remote repositories. This allows discovery of components available in these remote repositories without prior downloads.
Scheduled Tasks
Nexus OSS has the concept of scheduled tasks: periodic jobs which take care of various repository management tasks, such as deleting old snapshots, evicting unused items, and publishing repository indexes.
REST Services
Nexus OSS is based on a series of REST services, and when you are using the Nexus web front-end UI, you are really just interacting with a set of REST services. Because of this open architecture, you can leverage the REST service to create custom interactions or to automate repository management with your own scripts.
Integration with m2eclipse
When you use Nexus as a repository manager it creates indexes that support the Maven integration for the Eclipse IDE -M2Eclipse. They are immediately available to the project creation wizards and are included in search results in the IDE and other operations with dependencies and plugins.