Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
enseignement:tp:forge-maven [2013/10/04 05:55]
ecoquery [Work1: slf4j]
enseignement:tp:forge-maven [2014/09/23 14:12] (Version actuelle)
ecoquery [Prise en main de Maven, Mercurial et Redmine]
Ligne 1: Ligne 1:
 ====== Prise en main de  Maven, Mercurial et Redmine ====== ====== Prise en main de  Maven, Mercurial et Redmine ======
  
-Ce TP est à réaliser de préférence sous Linux (accès à ''mvn''((pour maven)) et ''hg''((pour mercurial)) en ligne de commande). L'utilisation di'IDEs est interdite pour ce TP.+Ce TP est à réaliser de préférence sous Linux (accès à ''mvn''((pour maven)) et ''hg''((pour mercurial)) en ligne de commande). L'utilisation d'IDEs est interdite pour ce TP. On éditera les fichiers via gedit/kate/notepad++/emacs/vim, etc.
  
-Il est important de configurer correctement maven: [[enseignement:aide:logiciels#maven|voir l'aide]]+Warning SSL: voir la [[http://forge.univ-lyon1.fr/projects/forge/wiki/FAQ|FAQ de la forge]] 
 + 
 +=== Maven === 
 + 
 +Il est important de configurer correctement maven: [[enseignement:aide:logiciels#maven|voir l'aide]]
 + 
 +<note tip>Sous linux: si maven n'est pas installé: 
 + 
 +Ajouter le répertoire suivant à votre PATH: 
 +<code>export PATH=$PATH:/home/tpetu/Enseignants/emmanuel.coquery/binetu</code> 
 + 
 +Ou bien télécharger [[http://mirror.bbln.org/apache/maven/maven-3/3.2.3/binaries/apache-maven-3.2.3-bin.tar.gz|apache-maven-3.2.3-bin.tar.gz]] et extraire l'archive dans /tmp. Ajouter /tmp/apache-maven-3.2.3/bin dans votre PATH: 
 +<code> 
 +cd /tmp 
 +wget http://mirror.bbln.org/apache/maven/maven-3/3.2.3/binaries/apache-maven-3.2.3-bin.tar.gz 
 +tar xzf apache-maven-3.2.3-bin.tar.gz 
 +export PATH=/tmp/apache-maven-3.2.3/bin:$PATH 
 +cd 
 +</code></note>
  
 ===== Démarrage ===== ===== Démarrage =====
Ligne 58: Ligne 76:
  
 Constater que les modifications sont visibles depuis site de votre projet forge. Constater que les modifications sont visibles depuis site de votre projet forge.
 +<note tip>Si mercurial se plain que vous n'avez pas spécifié de nom d'utlisateur, deux choix: 
 +  * Utiliser l'argument ''-u <nowiki>"mon nom <mon.email@mon.domaine>"</nowiki>'' 
 +  * Modifier votre configuration mercurial en ajoutant  au fichier ''~/.hgrc'' ([[http://mercurial.selenic.com/wiki/QuickStart|doc]]) <code>[ui] 
 +username = John Doe <john@example.com></code>  
 +</note>
 ===== hgignore et gestion d'un ticket ===== ===== hgignore et gestion d'un ticket =====
  
Ligne 87: Ligne 109:
 puis faire le push<code> hg push</code> puis faire le push<code> hg push</code>
  
-Dans le projet forge, allez voir le dépôt et cliquez sur le lien vers la demande depuis le dernier message de commit. +Dans le projet forge, allez voir le dépôt et cliquez sur le dernier commit et ajouter une demande liée en spécifiant votre numéro de ticket. Cliquer ensuite sur le lien vers la demande depuis le  message de commit. 
-Passer le statut de la demande à "closed" en indiquant le numéro de la révision précédé de la lettre r((à priori r4)) dans les notes de mise à jour.+ 
 +Passer le statut de la demande à "closed" en indiquant le numéro de la révision précédé de la lettre r((à priori r4)) ou le hash du commit précédé de ''commit:'' dans les notes de mise à jour((utiliser la prévisualisation pour vérifier que les liens sont correctement faits)).
  
 ===== Gestion de branches et de conflits ===== ===== Gestion de branches et de conflits =====
Ligne 116: Ligne 139:
  
 Pour passer les arguments en ligne de commande, ajouter ''-Dexec.args="-foo bar"'', exemple: Pour passer les arguments en ligne de commande, ajouter ''-Dexec.args="-foo bar"'', exemple:
-<code>mvn exec:java -Dexec.mainClass=bonjour.App -Dexec.args="-u Toto"</code>+<code>mvn exec:java -Dexec.mainClass=bonjour.App -Dexec.args="-u Titi"</code>
  
 Valider les modifications: Valider les modifications:
Ligne 169: Ligne 192:
 Cette commande importe les modification de la branche crée lors du pull dans la branche courante. Cette commande importe les modification de la branche crée lors du pull dans la branche courante.
  
-Cette modification créée des conflits sur la classe ''bonjour.App'' et sur le fichier ''pom.xml'' du projet ''bonjour''. ''hg status'' les signale avec la lettre ''C''. Editer ces fichiers pour intégrer de manière cohérente les modifications effectuées dans le deux branches. Une fois les modifications effectuées, si la construction ''mvn install'' fonctionne, indiquer ques les conflits sont résolus via <code>hg resolve -m le_fichier_concerne</code> (voir la [[http://mercurial.selenic.com/wiki/TutorialConflict|doc]]).+Cette modification créée des conflits sur la classe ''bonjour.App'' et sur le fichier ''pom.xml'' du projet ''bonjour''. ''hg status'' les signale comme étant modifiés avec la lettre ''M''. Editer ces fichiers pour intégrer de manière cohérente les modifications effectuées dans le deux branches. Une fois les modifications effectuées, si la construction ''mvn install'' fonctionne, indiquer ques les conflits sont résolus via <code>hg resolve -m le_fichier_concerne</code> (voir la [[http://mercurial.selenic.com/wiki/TutorialConflict|doc]]).
  
 Valider et transmettre les modifications: Valider et transmettre les modifications:
Ligne 194: Ligne 217:
  
 Cette commande créée un nouveau module ''salut''. Modifier le pom de salut pour y intégrer la partie ''build'' du pom de ''bonjour''. Ajouter une dépendance vers le projet bonjour dans le pom du projet salut. Cette commande créée un nouveau module ''salut''. Modifier le pom de salut pour y intégrer la partie ''build'' du pom de ''bonjour''. Ajouter une dépendance vers le projet bonjour dans le pom du projet salut.
-Renommer la classe salut.App en salut.Salut et modifier la mainClass dans la configuration du plugin d'assembly. Faire que la classe salut.Salut étende la classe bonjour.App en changeant le comportement de getMessage pour afficher Salut au lieu de Bienvenue. Changer le main de la classe salut.Salut pour imiter le comportement du main de bonjour.Bonjour, mais enutilisant un objet Salut.+Renommer la classe salut.App en salut.Salut et modifier la mainClass dans la configuration du plugin d'assembly. Faire que la classe salut.Salut étende la classe bonjour.App en changeant le comportement de getMessage pour afficher Salut au lieu de Bienvenue. Changer le main de la classe salut.Salut pour imiter le comportement du main de bonjour.Bonjour, mais en utilisant un objet Salut.
  
 Lancer ''mvn clean'' puis ''mvn install'' depuis le projet base et constater que les projet sont construit suivant l'ordre de leur dépendances relatives((i.e. bonjour avant salut)). Lancer ''mvn clean'' puis ''mvn install'' depuis le projet base et constater que les projet sont construit suivant l'ordre de leur dépendances relatives((i.e. bonjour avant salut)).