Utilisation de Maven et de Hudson

Utilisation "basique" de Maven et de Hudson


 Des liens:

Convention de nommage

Le répertoire d'installation de Maven est appelé <MavenInstall>.

Le répertoire de dépôt du repository de Maven est appelé <MavenRepository>.

  Installer Maven

URL: http://maven.apache.org/download.html

  1. Prendre la dernière version de maven 3
  2. Dézipper la version dans C:\<MavenInstall>\maven-3.*
  3. Suivre les instructions de la page http://maven.apache.org/download.html
  4. Ne pas oublier d'ajouter le répertoire C:\<MavenInstall>\maven-3.*/bin dans le le path.

Tester maven en lançant la commande mvn --version.


 Compiler un projet Fudaa avec Maven

Télécharger un projet de Fudaa: il faut faire un clone avec Git à partir de l'adresse: https://gitlab.com/fudaa. Par exemple, pour le modeleur il faut checkouter à partir de: git@gitlab.com:fudaa/fudaa-modeleur.git (https://gitlab.com/fudaa/fudaa-modeleur).

Tester si le projet compile bien, il faut se placer dans le répertoire contenant le pom et lancer la commande: mvn install

la commande install permet de compiler le projet, lancer les tests unitaires et générer les jar sur le PC du développeur. Si une personne veut mettre à disposition des jars, il doit lancer la commande "deploy". Cette commande peut être lancée fréquemment avec des versions SNAPSHOT. Elle compile le projet, lance les tests unitaires et upload les livrables sur le repository de fudaa.


Pour faire une release, cela demande 2 étapes : attention opération importante qui tague les sources et déploie les livrables. Voir la partie Faire une release.


  Maven et les environnements de développement

 Maven et eclipse

Voir le document d'installer d'un projet pour Eclipse.

Pour créer les fichiers pour eclipse ( .classpath, .project), il faut se placer dans le répertoire contenant le pom et lancer la commande: mvn eclipse:eclipse

Il est possible d'utiliser un plugin:

 Maven et Netbeans

Netbeans gère nativement les projets maven et aucune manipulation n'est requise. Pour gérer un projet maven, il vous suffit d'utiliser le menu File->Open project et de sélectionner le répertoire contenant le fichier .pom du projet.

 Le repository maven: Sonatype

Il s'agit du serveur contenant toutes les librairies générées par fudaa:

 Utiliser une nouvelle librairie: ou chercher ?



 Présentation rapide de Maven et des pom

pom est un fichier qui décrit un projet: ces dépendances, les plugins à utiliser pour construire le livrable, le site web.... Voir la doc de Maven pour plus de détail. Les fichiers pom supportent l'héritage ce qui permet de limiter les redites.


 Architecture générale de Fudaa pour les pom

Les poms des projets fudaa héritent tous d'un pom parent https://gitlab.com/fudaa/fudaa-pom/blob/master/pom.xml. Ce pom définit les versions des dépendances extérieures et des modules. Ce pom unique permet de s'assurer de la cohérence des versions.

 Le framework

Les projets de la partie framework dépendent tous du pom du framework https://gitlab.com/fudaa/fudaa-pom/blob/master/pom.xml.

Ils sont déclarés comme modules de ce pom. Cela permet d'unifier le cycle de vie de tous les projets de la partie framework. Ainsi, si on lance la commande mvn clean install dans le dossier framework, tous les projets seront nettoyés et construits.

Une release se fera également pour la totalité des modules du framework. Si une modification importante a lieu sur un des modules, on veillera à faire une release du framework entier.

La version en cours est 1.2-SNAPSHOT

 Les projets applicatifs

Les projets de la partie soft héritent du pom https://svn.code.sf.net/p/fudaa/svn/trunk/pom/soft-pom/pom.xml.

Ces projets applicatifs sont ou non dépendants du framework, ils sont ou non dépendants des projets business.

Chaque projet peut avoir sa propre vie indépendamment des autres. Autrement dit, chaque projet peut être releasé indépendamment des autres.

 Faire une release

Tout est automatisé avec GitLab.

Par exemple, pour le Framework Fudaa, le job release permet d'incrémenter les versions des livrables, de taguer et de produire les artifacts: https://gitlab.com/fudaa/fudaa-framework/blob/master/.gitlab-ci.yml