Installation Maven Ubuntu

De EjnTricks

L'installation deMaven sur une machine Ubuntu s'effectue en copiant simplement les binaires et après quelques configurations des variables d'environnement. Son utilisation est nécessaire dans le cadre d'une mise en place d'un serveur d'intégration continue.

Hand-icon.png Votre avis

Nobody voted on this yet

 You need to enable JavaScript to vote


Folder-icon.png Initialisation

L'application va être installée sous /var/opt/apache-maven avec une organisation qui doit permettre de faciliter les montées de version.

#sudo mkdir /var/opt/apache-maven


System-Install-icon.png Installation

L'archive apache-maven-2.2.1-bin.tar.gz est téléchargée dans le répertoire /var/opt/apache-maven, puis est installée sous /var/opt/apache-maven, avec modification de l'emplacement racine pour être 2.2.1.

#sudo tar --transform 's/^apache-maven-2.2.1/2.2.1/' -C /var/opt/apache-maven -xzvf /var/opt/apache-maven/apache-maven-2.2.1-bin.tar.gz

Le fichier téléchargé peut être supprimé.

#sudo rm /var/opt/apache-maven/apache-maven-2.2.1-bin.tar.gz


Vues-icon.png Référencement version

Afin de faciliter les montées de versions, le lien /var/opt/maven est mis en place pour référencer la version active.

#sudo ln -s /var/opt/apache-maven/2.2.1 /var/opt/maven


Icon-database.png Création repository

Maven utilise un "repository" sur le poste pour stocker les librairies déjà téléchargées. Par défaut, cela se place dans un répertoire .m2 dans le home de l'utilisateur. Afin de partager ce repository avec les différents comptes, il faut modifier la configuration. Le repository sera placé dans le répertoire /usr/share/maven/repository

#sudo mkdir -p /usr/share/maven/repository

Dans le cadre de cette installation, le repository étant utilisé par des outils déployés sous Tomcat, les sécurités sont modifiées ainsi:

#sudo chown -R root:tomcat6 /usr/share/maven
#sudo chmod -R 775 /usr/share/maven/repository

Attention, lors des mises à jour de Tomcat, il peut être nécessaire de modifier les permissions sur ce répertoire, pour affecter les droits au nouveau compte utilisé pour Tomcat.


Configuration-icon.png Configuration

La configuration de l'instance s'effectue en modifiant le fichier settings.xml global ou spécifique à l'utilisateur, comme explicité dans l'article de configuration.

L'emplacement de ce repository doit etre configuré au niveau de Maven dans le fichier settings.xml. Ce fichier se trouve dans le sous répertoire conf du répertoire d'installation, à savoir /var/opt/apache-maven-2.2.1/conf de le cadre de cette installation. Pour cela, il faut ajouter un noeud localRepository comme l'indique l'exemple:

  <localRepository>/usr/share/maven/repository</localRepository>
  <!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ~/.m2/repository
  <localRepository>/path/to/local/repo</localRepository>
  -->

Afin d'utiliser le serveur Nexus mis en place, il faut ajouter un mirroir dans le fichier de configuration. Par défaut, toutes les demandes passeront par ce serveur. Au niveau du noeud mirrors, une configuration est ajoutée ainsi, comme décrit sur le site de Nexus :

Dans le cadre de cet exemple, Nexus est hébergé sur la machine 192.168.1.5 derrière un serveur Apache. Il faut configurer :

  • Un nouveau mirroir qui servira toutes les demandes;
  • Un profile avec une URL quelconque qui sera surchargée par le mirroir;
  • Activation du profile.

Ainsi toutes les demandes seront dirigés vers le serveur Nexus.

  <mirrors>
    <mirror>
      <id>nexus</id>
      <mirrorOf>*</mirrorOf>
      <name>Local nexus.</name>
      <url>http://192.168.1.5/nexus/content/groups/public</url>
    </mirror>
  </mirrors>

  <profiles>
    <profile>
      <id>nexus</id>
      <!-- Enable snapshots for the built in central repo to direct -->
      <!-- 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>

  <activeProfiles>
    <!-- make the profile active all the time -->
    <activeProfile>nexus</activeProfile>
  </activeProfiles>


Share-icon.png Fichiers communs

Un répertoire common est mis en place pour externaliser les fichiers de configurations.

#sudo mkdir -p /var/opt/apache-maven/common/conf

Le fichier settings.xml sera alors placé dans ce répertoire.

#sudo mv /var/opt/apache-maven/2.2.1/conf/settings.xml /var/opt/apache-maven/common/conf/
#sudo ln -s /var/opt/apache-maven/common/conf/settings.xml /var/opt/apache-maven/2.2.1/conf/settings.xml
#sudo chown -h root:root /var/opt/apache-maven/2.2.1/conf/settings.xml


Update icon.png Update

2.2.1 → 3.3.3 3.3.3 → 3.3.9 3.3.9 → 3.5.2 3.5.2 → 3.5.3


User-icon.png Compte Tomcat

Le serveur Tomcat est lancé avec le compte tomcatX avec un home utilisateur positionné sur /usr/share/tomcatX, où X dépend de la version du serveur. Les produits utilisant Maven vérifie l'existence du répertoire .m2 dans ce dernier. Pour éviter la duplication, un lien symbolique est créé.

#sudo mkdir /usr/share/tomcatX/.m2
#ln -s /var/opt/apache-maven-2.2.1/conf/settings.xml /usr/share/tomcatX/.m2/settings.xml

A chaque mise à jour de Tomcat, il sera nécessaire d'effectuer ces opérations.


User-group-icon.png Comptes utilisateurs

Dans les précédents paragraphes, Maven n'est utilisé que par l'utilisateur de service pour Tomcat. Or, il peut être nécessaire d'accéder à Maven, et surtout le dépôt, par plusieurs applications / comptes utilisateur. Il est donc recommandé de créer un groupe, par exemple maven, avec les droits de modifications sur les fichiers nécessaires.

Add-icon.png Création groupe

Dans le cadre de cette instance, un groupe maven est créé.

#sudo groupadd -r maven

User-icon.png Ajout utilisateur

Il suffit alors d'ajouter les comptes utilisateur à ce nouveau group. Pour l'utilisation de Jenkins en service, un comtpe jenkins a été ajouté. Il est nécessaire de l'ajouter.

#sudo usermod -a -G maven jenkins

Icon ACL.png Mise jour permissions

Si cette mise en place s'effectue sur une instance existante de Maven, il peut être nécessaire de mettre à jour le fichiers existants. Pour cette installation, la mise à jour du dépôt s'effectue ainsi.

#sudo chown -R root:maven /usr/share/maven
#sudo chown root:maven /usr/share/maven

Les permissions des fichiers peuvent être réinitialisées, dans ce cas avec un droit de modification pour le propriétaire et le groupe maven et de lecture pour tous les autres utilisateurs.

#sudo chmod 775 /usr/share/maven
#sudo find /usr/share/maven -type f -exec chmod 0664 {} \;
#sudo find /usr/share/maven -type d -exec chmod 0775 {} \;

[[File:Warning-icon.png|link=)] Attention les différents programme qui vont utiliser ce dépot ne prendront pas forcément en compte les permissions spécifiées. Il est nécessaire de configurer au niveau système. Dans un premier temps, il faut s'assurer que le groupe d'accès est forcé avec la valeur maven en fournissant l'argument g+s à la commande chmod sur le répertoire.

#sudo chmod g+s /usr/share/maven

Dans le cas où des fichiers sont déjà existants, il est nécessaire de l'appliquer récursivement.

#sudo find /usr/share/maven -type d -exec chmod g+s {} \;

Il faut également s'assurer que le groupe est correctement positionné sur l'ensemble des fichiers.

#sudo chgrp -R maven /usr/share/maven;

Enfin, il faut spécialiser les permissions avec la commande setfacl pour les forcer sur les fichiers et répertoires créés.

#sudo setfacl -dm g::7,o::5 /usr/share/maven

Il est possible d'appliqer cette configuration récursivement, en cas de reprise, avec l'argument R.

#sudo setfacl -Rdm g::7,o::5 /usr/share/maven