Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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 soit: version 2.2.1de maven 3
  2. Dézipper la version dans C:\devel\maven<MavenInstall>\maven-23.2.1*
  3. Suivre les instructions de la page http://maven.apache.org/download.html
  4. Ne pas oublier d'ajouter le répertoire C:\devel<MavenInstall>\maven\maven-23.2.1*/bin dans le le path.

Dans le répertoire %HOME%\.m2 (soit C:\Documents and Settings\<votreLogin>\.m2 sous Windows) ajouter le fichier settings.xml. Il doit contenir:

...

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 checkout clone avec subversion Git à partir de l'adresse: https://fudaa.svn.sourceforge.net/svnroot/gitlab.com/fudaa. Par exemple, pour le modeleur il faut checkouter à partir de: git@gitlab.com:fudaa/fudaa-modeleur.git (https://fudaa.svn.sourceforge.net/svnroot/fudaa/trunk/soft/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 compileinstall

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

...

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:

C'est sur ce serveur que toutes les dépendances sont téléchargées. Des infos sur l'outil utilisé: http://www.jfrog.org/community.php

...

 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.

...

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/

...

En réalité, 2 ensembles existent implicitement :

  • Un ensemble lié à corba (dodico-corba, fudaa-common-corba)
  • Un ensemble lié à la représentation de géométries 2D (fudaa-ef, dodico-h2d, fudaa-sig)

Ces ensembles sont dépendants du framework. Lors d'une release, on veillera à garder ces 2 ensembles cohérents, même si la version d'un ensemble diffère de l'autre.

La version en cours est 1.0 pour l'ensemble Corba, 1.2-SNAPSHOT pour l'ensemble géométrie 2D.

 Les projets applicatifs

...

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

Cette opération est importante: elle permet de taguer les sources ( faire une branche), générer les livrables et les placer dans le repository distant, générer le site internet du projet, et finalement elle incrémente la version du projet. Par exemple: le projet fudaa-ef est dans la version 1.0-SNAPSHOT. Les commandes maven sont:

1- Preparer les sources ( soit mvn release:prepare):

  1. incrémenter en version 1.0
  2. Taguer les sources de 1.0
  3. Passer en version 1.1-SNAPSHOT

Pour cette partie, le développeur peut choisir les versions ( sauf s'il lance l'opération en mode batch, voir ci-dessous).

2- Faire la release ( mvn release:perform):

  1. Télécharger les sources taguées en 1.0
  2. Construire les livrables à a partir de ces sources
  3. Déposer les livrables sur le repository de fudaa
  4. Générer le site internet

 

Pour éviter les casses-têtes avec la génération du site, la commande suivante peut être utilisée:

mvn release:perform -Dgoals=deploy

 

 Les commandes maven

Pour préparer une release sans modifier l'existant (pour voir ce que cela donne): mvn release:prepare -DdryRun=true

pour netoyer et lancer la release mvn release:clean release:prepare Lors de cette opération, une série de question sera posée au développeur.

Les fichiers créés par cette dernière opération

  • pom.xml.tag sera la version envoyée sur le serveur
  • pom.xml.next  le prochain pom utilise après la release
  • pom.xml.releaseBackup: le pom avant la commande

Pour lancer une release en batch mode (sans question) mvn --batch-mode release:prepare

Même chose que commande précédente sauf qu'aucune question n'est posée.

finalement pour déployer la version:

mvn release:perform

 

  Documentation sur le web:

http://weblogs.java.net/blog/johnsmart/archive/2008/08/using_the_maven.html

 

  Maven et svn

pour faire une release complète, il faut un client svn sur son poste.

Pour linux, il ne devrait pas y avoir de problème.

 

  Pour Windows:

Toirtoise ne fournit pas l'exe svn.exe requis par maven: Possibilités:

  • télécharger le client svn de subversion. Problème: il faut s'inscrire et la dernière version ne semble pas fonctionne ( erreur du style " Le fichier ... est déjà présent sur le serveur"
  • solution pure java: ( cf super-pom/pom.xml). Ce serait la solution à envisager car il n'est pas nécessaire de télécharger un outil annexe et tout se fait via Maven. Ne fonctionne pas avec la dernière version
  • utiliser le client svn SlikSVN : fonctionne très bien SlikSVN: http://www.sliksvn.com/en/download/

  Hudson et Maven

Hudson est un moteur d'intégration continue. Il permet de lancer les cibles maven de manière périodique.

Normalement toutes les releases, deploy pourraient se faire depuis le moteur d'intégration continue ( il reste des points à régler). Cela permettrait d'éviter les fautes de frappes lors des commandes fatidiques.

  Utilisation de Hudson

...

 

  Comment sont nommées les builds dans Hudson (à compléter):

...

Anchor
release
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