Objectif

L'objectif est de présenter rapidement Nexus de Sonatype et de montrer en quelques points comment l'installer, le configurer et l'utiliser.

Introduction

Nexus est un outil open source écrit en Java et distribué sous licence GPL. Il appartient à la même gamme de produits que Maven proxy, Apache Archiva, Dsmp ou encore Artifactory.

Il s'agit d'un gestionnaire de dépôt de référentiels Maven et vise deux principaux objectifs : agir comme une proxy entre l'entreprise et les dépôts publics de Maven mais aussi comme destinataire de vos propres artefacts.

Il propose une interface utilisateur et d'administration assez agréable qui utilise la libraire Javascript Ext JS. Il est possible de le tester en ligne sur http://repository.sonatype.org

Le fait d'utiliser un tel proxy apporte l'avantage essentiel qui est d'accélérer les build en organisant un cache local du référentiel distant. Mais les avantages d'un gestionnaire de repository comme Nexus sont aussi de :

· mieux gérer les snapshots que Nexus tient à jour dans le référentiel local,

· permettre de ne récupérer qu'une seule fois les librairies et leurs dépendances, quelque soit le nombre de développeurs et de builds,

· avoir la possibilité de contrôler les dépendances, de choisir la version de tel ou tel framework utilisé par votre entreprise,

· avoir la possibilité d'inclure ou d'exclure certaines librairies,

· avoir la possibilité de déployer les artefacts depuis l'interface,

· pouvoir suivre l'ajout des artefacts à l'aide de flux RSS,

· etc.

Autre avantage de Nexus c'est son intégration facile avec Eclipse à travers le plugin M2Eclipse du même éditeur Sonatype.

Histoire

Les premières versions de Nexus datent de 2007 lorsque Sonatype a proposé à Tamas Cservenak de développer un gestionnaire de référentiel pour Maven. Tamas était en effet la bonne personne pour aider à développer Nexus car c'est lui qui avait commencé en 2005 à écrire avec succès Proximity. Tamas avait écrit ce proxy pour se prémunir lors des builds des lenteurs des lignes ADSL de son fournisseur d'accès. Que les utilisateurs de Proximity se rassurent, Nexus reprend la totalité du code de ce dernier!!

Après quelques versions candidates, la release 1.0.0 de Nexus est disponible depuis le 22 août.

Quelques bases

Les référentiels :

Nexus gère trois types de référentiels :

· proxy qui regroupe l'image de référentiels distants,

· hosted qui est le référentiel hébergé par Nexus,

· virtual qui est une sorte d'adaptateur depuis et vers différents types de dépôts (actuellement Nexus gère les conversions vers et depuis les dépôts maven 1 et maven 2).


On peut regrouper les référentiels en utilisant la notion de Groups du menu Administration.

Les utilisateurs :

Nexus gère trois types d'utlisateurs :

· admin qui a le droit de tout faire,

· deployment qui a le droit de lire et déployer dans les référentiels,

· anonymous qui a le droit de recherches et de lecture des référentiels.


On peut créer des utilisateurs et gérer leur profile en utilisant Users, Roles et Privileges du menu Security.

Installation

Il n'y pas réellement d'installation. Il suffit de télécharger Nexus à l'adresse http://nexus.sonatype.org/downloads/ et de le décompresser dans le répertoire de son choix qu'on désignera par ${nexus_home}. Ce qui est de ce fait "installé", c'est l'application WEB Nexus et le moteur Jetty pour le lancer.

Lancement

Lorsque vous lancez Nexus, c'est un serveur WEB que vous lancez. Il écoute sur le host et le port par défaut localhost:8081. Nexus est lancé via le wrapper natif Tanuki Service Wrapper et tourne dans le container de servlet Jetty.

Pour lancer Nexus, il suffit de lancer le shell correspondant à votre os dans le répertoire ${nexus_home}/bin/jsw.

Pour commencer

Une fois lancé, Nexus est disponible à l'adresse http://localhost:8081/nexus.

Cliquez sur "Log In" en haut à droite de la page d'accueil pour vous loguer en admin (le mot de passe par défaut c'est admin123).

clip_image002

Page de login avec le compte admin/admin123

Avant de commencer à utiliser Nexus prenez quelques secondes pour :

· changer de mot de passe d'admin depuis le menu d'admin (security/change password),

· positionner les paramètres SMTP permettant de retrouver vos informations de login en cas de perte :

clip_image004

Définir les paramètres du serveur SMTP

· activer l'utlisation d'index distant qui permet à Nexus de travailler sur la base de l'index Lucene de chaque dépôt qui recense l'ensemble des artefacts qu'il propose :

clip_image006

Aciver l'utilisation d'index


Utilisation

Interface anonymous
Nexus propose par défaut un accès anonymous (possibilité qu'on peut bien sûr supprimer via l'admin). Il suffit donc de se connecter à l'application sur http://localhost:8081/nexus pour avoir accès aux dépôts en lecture :

clip_image008

L'interface pour un utilisateur anonymous

Principaux services
Les principaux services proposés par l'interface web de Nexus sont les suivants :

· Naviguer dans les dépôts et visualiser leur contenu, leur type et status :

clip_image010

Navigation dans un dépôt

Pendant la navigation on peut cliquer droit sur le dépôt pour accéder aux actions possibles. Par exemple possibilité d'uploder directement un artefact dans le dépôt ou bien celle de mise hors de service d'un dépôt.

· Déployer un artefact via l'interface :

Pour ce faire il suffit de cliquer droit sur le dépôt cible et de choisir  l'option d'upload

clip_image012

Upload d'un artefact dans un dépôt

Saisir dans le cadre l'emplacement du fichier à uploader ainsi que celui de son fichier POM ou bien saisir directement les attributs (group, version, packaging, ...) et pour finir cliquer sur le bouton upload.

clip_image014

Saisie d'information concernant l'artefact

· Naviguer dans les groupes :

La notion de groupe permet de donner une vision unique de différents types de référentiels via donc un URL unique. Nexus propose par défaut les groupes "Public Repositories" et "Public Snapshot Repositories".

clip_image016

Navigation dans un groupe

· Visualiser les rapports concernant les artefacts des dépôts :

Ceci permet de voir l'état des artefacts mais aussi de pouvoir surveiller les rapports via abonnement aux flux rss. Ce qui est utile par exemple pour que tout le monde soit informé de l'arrivée d'une nouvelle version dans les référentiels Nexus.

clip_image018

Visualiser les rapports et accès aux flux RSS


Configuration Maven

Pour utiliser Nexus comme proxy des dépôts, il faut bien sûr configurer Maven pour qu'il utlise désormais Nexus plutôt que le dépôt central.
Pour ce faire il faut ajouter dans le fichier settings.xml, les quelques lignes pour le dépôt public :

<mirrors>
    <mirror>
      <id>Nexus</id>
      <name>Nexus Public Mirror</name>
      <url>http://localhost:8081/nexus/content/groups/public</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
  </mirrors>


De ce fait Maven recherche les artefacts dans le dépôt local. Nexus sert ces artefacts et en cas d'absence de ces derniers il les récupère depuis le dépôt distant et les positionne dans son cache.


Configuration Nexus

Les différentes possibilités de paramétrage sont regroupés dans les deux menus Administration et Security accessible par le profile admin.
Les paramétrages possibles sont essentiellement :

· Configurer les paramètres HTTP, SMTP, HTTP Proxy,

· Gérer la sécurité, les utilisateurs du système ainsi que les rôles et privilèges,

· Gestion des groupes et de routing qui permet de filtrer pour un groupe donné les artifacts téléchargés,

· Ordonnancer les taches automatiques de mise à jour de référentiels,

· etc.


Ressources

Le site Nexus : http://nexus.sonatype.org
Télécherger Nexus : http://nexus.sonatype.org/downloads
Tester Nexus en ligne : http://repository.sonatype.org
Un aperçu des gestionnaires : http://maven.apache.org/repository-management.html