Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

Utilisation "basique" de Maven et de Hudson

 

 Des liens:

 

  Installer Maven

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

  1. Prendre la dernière version soit: version 2.2.1
  2. Dézipper la version dans C:\devel\maven\maven-2.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\maven\maven-2.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:

<settings>
	<localRepository>C:\devel\maven-repository</localRepository>
	<mirrors>
		<mirror>
			<id>artifactory</id>
			<mirrorOf>*</mirrorOf>
			<url>http://www.fudaa.fr:80/artifactory/repo</url>
			<name>Artifactory</name>
		</mirror>
	</mirrors>
</settings> 

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

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

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 de fudaa

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 http://fudaa.svn.sourceforge.net/viewvc/fudaa/trunk/pom/super-pom/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 http://fudaa.svn.sourceforge.net/viewvc/fudaa/trunk/framework/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 business

Les projets de la partie business héritent du pom http://fudaa.svn.sourceforge.net/viewvc/fudaa/trunk/pom/business-pom/pom.xml. Contrairement au framework, les projets sont en principe indépendants les uns des autres.

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

Les projets de la partie soft héritent du pom http://fudaa.svn.sourceforge.net/viewvc/fudaa/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


Hudson permet de lancer périodiquement des compilations sur un projet donné. Par exemple, pour fudaa-ef, le projet est compilé et testé a chaque modification dans SVN:

 

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

Les suffixes Light indiquent qu'il s'agit de build lancés périodiquement qui se content de complier le projet et de lancer les tests unitaires. Les suffixes Deploy indiquent une comande deploy: ces builds sont lancés sur demande du développeur. Ne fonctionnent pas pour l'instant car il faut modifier les droits. Les suffixes Release ( non fait) permettrait de faire des releases : à faire.

  • No labels