Difference between revisions of "Nexus"

(Global configuration (settings.xml))
 
Line 3: Line 3:
  
 
This page explains how to setup and configure NEXUS Maven repositories.
 
This page explains how to setup and configure NEXUS Maven repositories.
 +
 +
For Nexus clients see [[Nexus Maven configuration]]
 +
  
  
Line 206: Line 209:
  
 
To change the password go to NEXUS > log-in > Security menu (left) > Users
 
To change the password go to NEXUS > log-in > Security menu (left) > Users
 
=Maven client configuration=
 
 
All repositories of type “proxy” need to change “Download Remote Indexes” property  to true in the configuration tab.
 
 
As you see there are several types of repositories.
 
* '''proxy''' – acts as proxy for external repository.
 
* '''hosted''' – repository that managed artifact produced by you
 
* '''virtual''' – kind of adapter for e.g transforming maven1 to maven 2 format.
 
* '''group''' – maybe not a repository in sonatyp’s terminology but behaves like one. A group groups several repositories to one exposing result as single URI.
 
 
 
 
==Global configuration (settings.xml)==
 
 
To set the Global configuration, edit your <code>Maven/conf/settings.xml</code> and add:
 
 
<syntaxhighlight lang="xml">
 
<!-- Nexus deployment user -->
 
<!-- (!! Adjust the passwords !!) -->
 
<servers>
 
  <server>
 
      <id>releases</id>
 
      <username>deployment</username>
 
      <password>deployment123</password>
 
  </server>
 
  <server>
 
      <id>snapshots</id>
 
      <username>deployment</username>
 
      <password>deployment123</password>
 
  </server>
 
  <server>
 
      <id>nexus</id>
 
      <username>deployment</username>
 
      <password>deployment123</password>
 
  </server>
 
</servers>
 
 
<!-- declare your NEXUS server -->
 
<mirrors>
 
  <mirror>
 
    <!--This sends everything else to /public -->
 
    <id>nexus</id>
 
    <mirrorOf>*</mirrorOf>
 
  <url>https://dev.daxiongmao.eu/nexus/content/groups/public</url>
 
  </mirror>
 
</mirrors>
 
 
<!-- Create a profile to proxy all requests through Nexus -->
 
<profiles>
 
  <profile>
 
      <id>nexus</id>
 
      <!-- This will redirect all requests to Nexus via the mirror -->
 
      <repositories>
 
        <repository>
 
          <id>central</id>
 
          <url>http://central</url>
 
          <releases>
 
            <enabled>true</enabled>
 
          </releases>
 
          <snapshots>
 
              <enabled>true</enabled>
 
          </snapshots>
 
        </repository>
 
      </repositories>
 
      <pluginRepositories>
 
        <pluginRepository>
 
          <id>central</id>
 
          <url>http://central</url>
 
          <releases><enabled>true</enabled></releases>
 
          <snapshots><enabled>true</enabled></snapshots>
 
        </pluginRepository>
 
    </pluginRepositories>
 
  </profile>
 
</profiles>
 
 
<!--make the profile active all the time -->
 
<activeProfiles>
 
  <activeProfile>nexus</activeProfile>
 
</activeProfiles>
 
</syntaxhighlight>
 
 
==Project POM update==
 
 
As an alternative you can update the project's POM to ensure everyone uses your repository.
 
 
 
Put this before the [BUILD] section of your POM.
 
 
<syntaxhighlight lang="xml">
 
<distributionManagement>
 
<repository>
 
<id>nexus</id>
 
<url>https://dev.daxiongmao.eu/nexus/content/repositories/releases/</url>
 
<layout>default</layout>
 
<snapshots>
 
<updatePolicy>always</updatePolicy>
 
</snapshots>
 
<releases>
 
<updatePolicy>always</updatePolicy>
 
</releases>
 
</repository>
 
<snapshotRepository>
 
<id>nexus</id>
 
<url>https://dev.daxiongmao.eu/nexus/content/repositories/snapshots/</url>
 
<layout>default</layout>
 
<snapshots>
 
<updatePolicy>always</updatePolicy>
 
</snapshots>
 
<releases>
 
<updatePolicy>always</updatePolicy>
 
</releases>
 
</snapshotRepository>
 
</distributionManagement>
 
<repositories>
 
<repository>
 
<id>dev.daxiongmao.eu</id>
 
<url>https://dev.daxiongmao.eu/nexus/content/repositories/public/</url>
 
</repository>
 
</repositories>
 
 
</syntaxhighlight>
 
 
 
 
Now your maven client knows only your nexus and everything it needs and how it gets it, should be controlled by nexus.
 

Latest revision as of 11:53, 12 September 2015


This page explains how to setup and configure NEXUS Maven repositories.

For Nexus clients see Nexus Maven configuration


Requirements

a) You need to setup Maven


Installation

Create user / group

# Create group
addgroup --system "nexus"
 
# Create Nexus user (home directory must be Nexus)
adduser --home /opt/nexus --disabled-login --disabled-password nexus


Prepare work folder

You need to create a root folder to host all the artifacts. !!! This will be bigger and bigger over time !!!

mkdir -p /home/nexus
chmod -R 777 /home/nexus
chown -R nexus:nexus /home/nexus


Get binaries

Download Nexus OSS as Nexus Open-Source Server - take the ZIP format

cd /opt
wget http://www.sonatype.org/downloads/nexus-latest-bundle.tar.gz
tar xzvf nexus-latest-bundle.tar.gz
rm nexus-latest-bundle.tar.gz
ln -s /opt/nexus-2.11.4-01/ /opt/nexus


Set rights

chown -R nexus:nexus /opt/nexus
chown -R nexus:nexus /opt/nexus-2.11.4-01


Set nexus parameters

Adjust the port number and root context path, if required

vim /opt/nexus/conf/nexus.properties


Set:

application-port=9081
application-host=127.0.0.1
nexus-webapp-context-path=/nexus

## Nexus section
## nexus-work ==>> folders where the artifacts are going to be saved. You must choose a folder with a lot of disk!
nexus-work=/home/nexus
runtime=${bundleBasedir}/nexus/WEB-INF


Log symlink

ln -s /opt/nexus/logs/wrapper.log /var/log/nexus.log


Set Nexus user and rights

vim /opt/nexus/bin/nexus


# Set the correct home
NEXUS_HOME="/opt/nexus"

#uncomment and adjust
RUN_AS_USER="nexus"
#The PID directory must be a directory where you the runtime user can Read/Write
PIDDIR="/opt/nexus"


Start / stop server

To start|stop the server:

/opt/nexus/bin/nexus start


ERROR Fix

If you encounter the Failed to start Nexus OSS error, then you need to:

chown -R nexus:nexus /opt/sonatype-work


Run Nexus from anywhere

Set the NEXUS_HOME into the start script. Without it you cannot run Nexus as a service!

ln -s /opt/nexus/bin/nexus /usr/bin/nexus
ln -s /opt/nexus/bin/nexus /etc/init.d/nexus

vim /opt/nexus/bin/nexus


Start Nexus on boot

vim /opt/nexus/bin/nexus


Add the following declaration after the first line #!/bin/sh :

### BEGIN INIT INFO
# Provides:             Nexus
# Required-Start:       $all
# Required-Stop:
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    Nexus
### END INIT INFO


Register the program to the boot sequence:

cd /etc/init.d/
update-rc.d nexus defaults



Apache2 proxy

Put the following lines into your Apache2 proxy configuration:


   ## Proxy to NEXUS
   <Location /nexus/ >
       ProxyPass http://localhost:9081/nexus/
       ProxyPassReverse http://localhost:9081/nexus/
       Require all granted
       satisfy any
   </Location>


Nexus server access

You can access your server on http://myServer/nexus/ (Don't forget the end '/')

The default users and passwords are:


login password
admin admin123
deployment deployment123
anonymous


To change the password go to NEXUS > log-in > Security menu (left) > Users