Repository Management with Nexus
21.1. Nexus Plugins

The Nexus API is contained in a module named nexus-api. If you are developing a Nexus plugin, you will need to familiarize yourself with the extension points that are defined in this project.
Nexus provides an extra module for plugin developers - the "nexus-plugin-api". This module provides some extra annotations for plugins developers, and it allows a plugin developer to implement a plugin without having to know anything about Plexus or Nexus internals.
The Nexus Plugin API uses the @javax.inject.Inject annotation, an emerging standard for dependency injection which allows Nexus plugins to be developed in a way that is container-neutral.
The plugin API also introduces some additional annotations to make things easier:
@org.sonatype.plugin.Managed
When a @Managed annotation is present on an interface, it marks the interface as "component contract" (Plexus role). Any non-abstract classes implementing it will be made managed by current container.
@org.sonatype.nexus.plugins.RepositoryType
Used on interfaces, to mark it as new repository type, and to be registered with other core repository types in Nexus Repository Type Registry. It holds the basic information about the new type (the path where to mount it).
@org.sonatype.nexus.plugins.RestResource
Used on classes, to mark them as REST Resources.
