Nexus is used as a medium between components.

Repositories:

  1. Plugin: where to fetch build plugins
  2. Repository: similar to above, where to find plugins, parent poms, etc
  3. Distribution repository: where to transmit built things.  If you define a distributionManagement block with repository and snapshotRepository, maven will pick the right target based on project.version (if it ends in “-SNAPSHOT”)

Group repositories merge things. An order is defined in nexus allowing overrides.  

Proxies will serve a local cache if available, otherwise reach out to a remote repository.

Consumption of repos for Plugins and Build Dependencies

One can proxy any remote repository.  You can use scheduled tasks, smart proxies and release steps to force proxy syncs, however you can also set up a remote proxy with syncing disabled (to fix versions).

A Nexus Proxy server is still a nexus server and can host locally built artifacts (e.g. nextrel-dev)

proxying repos

Distribution

The distributionManagement block is only set up with snapshots.  However one will need to provide a settings.xml file with username and password defined.

One can do this a few ways.

  1. Pass in -Dusername=xxx -Dpassword=xxx and reference them in a file
  2. Set environment variables and use ${ENV.NEXUS_USER} and ${ENV.NEXUS_PASS}
  3. Dynamically generate one (eg. gensettings.ps1)