Utilisation de Maven et de Hudson
Utilisation "basique" de Maven et de Hudson
Des liens:
- http://maven.apache.org/guides/getting-started/index.html
- http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
- http://maven.apache.org/plugins/
- http://java.developpez.com/faq/maven/
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
- Prendre la dernière version de maven 3
- Dézipper la version dans C:\<MavenInstall>\maven-3.*
- Suivre les instructions de la page http://maven.apache.org/download.html
- 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:
- http://maven.apache.org/eclipse-plugin.html (Tester partiellement.)
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