ant,xdoclet,cvs réalisé par: lakhdhar yessin letaief sana

65
Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

Upload: armelle-aubert

Post on 03-Apr-2015

110 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

Ant,XDoclet,CVS

Réalisé par:Lakhdhar yessinLetaief Sana

Page 2: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

2ANT,Xcolet,CVSLakdhar Yessin & Letaief Sana

Contenu :

ANT

XDoclet

CVS

Page 3: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

3ANT,Xcolet,CVSLakdhar Yessin & Letaief Sana

ANT(Another Neat Tool)

ANT,XDoclet,CVS

Page 4: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

4ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Plan

Qu’est ce que ANT ?

Purquoi ANT ?

Comment ça marche ?

Demo…

Page 5: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

5ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Qu’est ce que Ant?

Un projet de l’ Apache Software Foundation. A l’origine,un sous-projet de l’Apache Jakarta Project.

Un outil de construction d’application écrit en Java.

Permet d’automatiser le processus de construction des projets.

Page 6: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

6ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Un processus de construction

Génération , à partir de sources, de différents types de fichiers

Problèmes: -Tâches répétitives -Perte de temps -Grands Projets -Complexité croissante, risques d'oubli

Nécessité d’automatisation,d’un outil.

Récupérer des sources

Compilation

Test

Réorganisations

de fichiers

DéploiementCréation de la

documentation

Page 7: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

7ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Pourquoi Ant?

Des outils existent: make , gnumake, nmake, jam….

Problème : Ces outils sont basés sur des scripts Shell dépendants du Système d’exploitation.

Solution : ANT qui est :

- Indépendant du Système d’exploitation.

- Accepte des instructions sous la forme d’un document XML ce qui le rend extensible et facile à mettre à jour.

- Open Source.

Page 8: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

8ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Comment ça marche ?

Page 9: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

9ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Build.xml

<project name=" test " default=" compile " basedir=" . ">

<?xml version=" 1.0 "?>

<property name=" src " value " . "/> <property name=" build " value =" build "/>

<target name=" init ">

<target name="compile " depend=" init "> <!-- compile the java code --> <javac srcdir=" ${src} " destdir="${build} "/> </target>

</project>

<mkdir dir=" ${build} "/> </target>

Page 10: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

10ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

<project>

● Elément principal, composé de 3 attributs:

- name : nom du projet - default : étape de construction par défaut - basedir : dossier racine (sinon le dossier du build.xml)

● Il contient : -Principalement : un ensemble de balises <target> -Optionnellement : <desciption>…

<project name=" test " default=" compile " basedir=" . "><project name=" test " default=" compile " basedir=" . ">

Page 11: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

11ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

<project name=" test" default=" compile " basedir=" . ">

<?xml version=" 1.0 "?>

<property name=" src " value ". "/> <property name=" build " value =" build "/>

<target name=" init ">

<target name="compile " depend=" init "> <!-- compile the java code --> <javac srcdir=" ${src} " destdi="${build} "/> </target>

</project>

<mkdir dir=" ${build} "/> </target>

Build.xml

Page 12: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

12ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

<property> ≈ variables

- Name : nom de la propriété- Value : valeur de la propriété

Le référencement d’une propriété se fait comme suit : ${nom_propriété}

Permet l’accès à :- Des propriétés systèmes : Ant permet l’accès à toutes les propriétés système

comme si prédéfinies avec <property>, Exemple : ${os.name}.

-Des Propriétés prédéfinies : - basedir : chemin absolu du répertoire de travail (sinon le dossier du build.xml)- ant.file : chemin absolu du fichier build,

- ant.project.name : le nom du projet courant (initialisé comme attribut dans<project>)…

<property name=« build » value =« build »/><property name=« build » value =« build »/>

Page 13: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

13ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

<project name=" test " default=" compile " basedir=" . ">

<?xml version=" 1.0 "?>

<property name=" src " value ". "/> <property name=" build " value =" build "/>

<target name=" init ">

<target name="compile " depend=" init ">

</project>

<mkdir dir=" ${build} "/> </target>

Build.xml

<!-- compile the java code --><javac srcdir=" ${src}" destdir="${build}"/>

</target>

Page 14: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

14ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

<target> (1)

<target name=«compile » <target name=«compile » depends=« init »>depends=« init »>

Définit une séquence de tâches à exécuter et possède :1) un attribut obligatoire

-name: nom qui permet son référencement

2) des attributs optionnels: - depends :liste des étapes de construction dont dépends

la séquence en question doivent être exécutées en premier - if, unless :permet de conditionner l'exécution par

l'existence d'une propriété Exemple :

<target name="A"/> <target name="C" depends="B"/> <target name="B" depends="A"/><target name="D" depends="C,B,A"/>

Page 15: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

15ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Build.xml

<project name=" test " default=" compile " basedir=" . ">

<?xml version=" 1.0 "?>

<property name=" src " value ". "/> <property name=" build " value =" build "/>

<target name=" init ">

<target name="compile " depend=" init ">

</project>

<mkdir dir=" ${build} "/> </target>

<!-- compile the java code --><javac srcdir=" ${src} " destdir="${build} "/>

</target>

Deux tâches (Tasks)Deux tâches (Tasks)

Page 16: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

16ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Les Tasks

Une tâche est une unité de traitements contenue dans une classe Java qui implémente l'interface org.apache.ant.Taskorg.apache.ant.Task

Une tâche est obligatoirement incluse dans une cible.

Représente le body des <targets> du code exécutable.

Peuvent utiliser des références à des propriétés.

Forme générale: <name attribute1="value1" attribute2="value2" ... />

Ant fournit en standard un certain nombre de tâches pour des traitements courants lors du développement en Java.

Page 17: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

17ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Quelques catégories de tâches :

Archives Tasks

Compile Tasks

DeployC Tasks

Documentation Tasks

EJB Tasks

Exécution Tasks

SCM Tasks

jarjar : Créer une archive de type jar earear : Créer une archive contenant une application J2EEGzipGzip : Compresser dans une archive

Page 18: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

18ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Quelques catégories de tâches :

Archives Tasks

Compile Tasks

Deployement Tasks

Documentation Tasks

EJB Tasks

Exécution Tasks

SCM Tasks

JavacJavac : Compiler des sources Java JspCJspC : Démarre le compilateur JSP.

Page 19: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

19ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Quelques catégories de tâches :

Archives Tasks

Compile Tasks

Deployement Tasks

Documentation Tasks

EJB Tasks

Exécution Tasks

SCM Tasks

ServerDeployServerDeploy : tâche pour démarrer le "hot" de l’outil de déploiement pour vendor-specific J2EE server.

Page 20: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

20ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Quelques catégories de tâches :

Archives Tasks

Compile Tasks

Deployement Tasks

Documentation Tasks

EJB Tasks

Exécution Tasks

SCM Tasks

JavadocJavadoc : Génération de la documentation en utilisant l’outil javadoc StylebookStylebook : Execute l’Apache Stylebook documentation generator

Page 21: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

21ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Quelques catégories de tâches :

Archives Tasks

Compile Tasks

Deployement Tasks

Documentation Tasks

EJB Tasks

Exécution Tasks

SCM Tasks

ejbcejbc : démarrer l’outil Weblogic's ejbcwlrunwlrun: démarre une instance weblogicwlstopwlstop: arrete une instance weblogic

Page 22: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

22ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Quelques catégories de tâches :

Archives Tasks

Compile Tasks

Deployement Tasks

Documentation Tasks

EJB Tasks

Exécution Tasks

SCM Tasks

AntAnt : démarre Ant sur un fichier spécifiéExecExec : Exécute une commande systèmeSleepSleep : suspendre l’exécution pour une période donnée

Page 23: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

23ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Quelques catégories de tâches :

Archives Tasks

Compile Tasks

Deployement Tasks

Documentation Tasks

EJB Tasks

Exécution Tasks

SCM Tasks

CvsCvs : Gérer packages/modules récuCés à partir du répertoire référence (repository) CVS.CvsTagDiffCvsTagDiff : Générer une fichier XML montrant les changements entre deux tags ou dates enregistrés dans le CVS repository.

Page 24: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

24ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Quelques catégories de tâches :

Archives Tasks

Compile Tasks

Deployement Tasks

Documentation Tasks

EJB Tasks

Exécution Tasks

SCM Tasks

Il reste encore une multitude de tâches(.NET Tasks, Mail Tasks, …) et la possibilité de créer ses propres tâches.

Page 25: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

25ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Integration dans les IDE :

Eclipse

WebSphere Studio Application Developer

JBuilder 8 Enterprise

Oracle9i JDeveloper

NetBeans / Sun ONE Studio

Page 26: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

26ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Demo

Création de Task

Compilation,Packagin,Déploiement d’une application J2EE

Page 27: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

27ANT,Xcolet,CVSLakdhar Yessin & Letaief Sana

ANT,XDoclet,CVS

XDoclet

Page 28: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

28ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Plan :

Présentation

Caractéristiques

Comment ça marche Tasks Subtask XDoclet & ANT Pattern de génération de code Templates

Récapitulatif

Démo

Page 29: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

29ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Présentation:

Xdoclet est un moteur de génération de code orienté attribut (repose sur des commentaires javadoc) .

Conçu à l'origine comme un outil de création d'EJBs, il a évolué en un moteur de génération de code générique.

Actuellement, XDoclet ne peut être utilisé que comme une étape de construction de programme (build process) en utilisant Jakarta Ant .

Page 30: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

30ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Présentation(2) :

Quand est ce que XDoclet est utlisé ?

● Fichiers de déploiement de configuration ● Systèmes construits autour de composantes métier●Systèmes multi tiers●Systèmes Orientés Interfaces

Page 31: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

31ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Présentation(3) :

Source : Test-Driven Developmentwith Spring and Hibernate,Matt Raible

Page 32: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

32ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Caractéristiques de XDoclet :

Permet de se focaliser sur un seul fichier par composant Facilite la mise à jour des fichiers Evite le travail répétitif

Amélioration de la productivitéAmélioration de la productivité Optimisation de l’intégration ContinueOptimisation de l’intégration Continue

XDoclet reconnaît une multitude de patterns J2EE largement reconnus

Supporte les Serveurs et les outils les + répandus

Extensible

Open Source

Ex : Composant EJB interfaces, value objects, struts forms.

JBoss, BEA WebLogic, IBM WebSphere, Oracle IAS, Orion, Jonas,etc…

Page 33: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

33ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Comment ça marche?

XDoclet permet le développement Orienté Attribut basé sur des commantaires JavaDoc spécifiques.

Une balise JavaDoc se présente sous la forme :

De même un tag spécifique XDoclet se présente sous la forme :

/** * @author C.TOWN **/

/**

* @namespace:tag_name name="value" name2="value2" ...

*/

Page 34: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

34ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Les namespaces :

namespace : représente un groupe de tags logiquement reliés (garantit l’absence de conflits de noms) voici quelques exemples d’espaces de noms :

ejb : informations standard sur les EJB (non spécifiques). jboss ,Weblogic,webSphere: informations spécifiques au serveur

d'application . soap : génère les decripteurs SOAP. struts : génère les fichiers struts-config.xml à partir de Form et Action. web : génère le fichier de configuration web.xml pour les Web

Applications. ...

Balises avec un nom et un jeu d’attributs optionnels Concept similaire à celui de l’XML mais avec une syntaxe différente.

@namespace:tag_name name="value" name2="value2" ... @namespace:tag_name name="value" name2="value2" ...

Page 35: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

35ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Exemple :

Les MetaData peuvent aussi être spécifiées pour une méthode

MetaData XDoclet placée en commentaire pour la classe

Page 36: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

36ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Exemple :

Exemple de tags pour le déploiement d’un bean entité élémentaire:

Comment sont générés les fichiers ?

Page 37: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

37ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Les tasks XDcolet :

On utilise XDoclet pour générer du code , MAIS il est plus correcte de dire qu’on utilise des tasks XDoclettasks XDoclet pour générer du code.

Un tasktask, ou une tâche est une application de génération de code de haut niveau.

Les 7 tasks XDoclet de base:

<ejbdoclet> : EJBs, Descripteurs de déploiements,… <webdoclet> : Développement Web,servets,taglibs,web frameworks <hibernatedoclet> : Configuration de Persistance Hibernate , MBeans… <jdodoclet> : JDO-metadata <jmxdoclet> : JMX-interfaces MBean, mlets, fichiers de configuration <doclet> : JDO-MetaData <documentdoclet> : Documentation de projet ,comme les listes TODO

Page 38: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

38ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Les subtasks XDcolet :

Une subtasksubtask est une procédure de génération de code élémentaire,fournis par un task.

le task fournit un contexte ou un groupement qui gère des subtasks plus ou moins « proches ».

Comment est lancée la génération ?

Exemple:

Task :

<ejbdoclet> :

Subtasks:

<deploymentdescriptor> Génération du descripteur de déploiement

<localinterface> Génération d’interface locale

Page 39: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

39ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

XDcolet et ANT (1):

Les tasks XDoclet sont des tasks ou tâches de construction ANTANT.

Pour récapituler :

Page 40: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

40ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

XDcolet et ANT (2):

<target name="Web_Module" description="Web">

<taskdef classpathref="xdoclet.classpath"

classname="xdoclet.modules.web.WebDocletTask"

name="webdocletwebdoclet" />

<webdoclet destDir="src" verbose="true">

<fileset dir="src" includes="**/*Servlet.java">

</fileset>

<deploymentdescriptor Servletspec="2.3" destDir="src/WEB-INF">

</deploymentdescriptor>

<jbosswebxml Version="4.0" destDir="src/WEB-INF">

</jbosswebxml>

</webdoclet>

</target>

Définition d’un task <webdoclet><webdoclet>

Page 41: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

41ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

XDcolet et ANT (2):

<target name="Web_Module" description="Web">

<taskdef classpathref="xdoclet.classpath"

classname="xdoclet.modules.web.WebDocletTask"

name="webdocletwebdoclet" />

<webdoclet destDir="src" verbose="true">

<fileset dir="src" includes="**/*Servlet.java">

</fileset>

<deploymentdescriptor Servletspec="2.3" destDir="src/WEB-INF">

</deploymentdescriptor>

<jbosswebxml Version="4.0" destDir="src/WEB-INF">

</jbosswebxml>

</webdoclet>

</target>

task

Définition d’un task <webdoclet><webdoclet>

Page 42: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

42ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

XDcolet et ANT (2):

<target name="Web_Module" description="Web">

<taskdef classpathref="xdoclet.classpath"

classname="xdoclet.modules.web.WebDocletTask"

name="webdocletwebdoclet" />

<webdoclet destDir="src" verbose="true">

<fileset dir="src" includes="**/*Servlet.java">

</fileset>

<deploymentdescriptor Servletspec="2.3" destDir="src/WEB-INF">

</deploymentdescriptor>

<jbosswebxml Version="4.0" destDir="src/WEB-INF">

</jbosswebxml>

</webdoclet>

</target>

tasksubtask

subtask

Définition d’un task <webdoclet><webdoclet>

Page 43: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

43ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Pattern de génération de code :

Comment est ce que les subtasks génèrent du code?

Page 44: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

44ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Le Template :

Le template est une version prototype du fichier qu’on veut générer.

Utilise les tags XML qui précisent au moteur template comment ajuster le codé généré en se basant sur : les classes en entrée les metadata qu’elles contiennent (balises javadoc et tag XDoclet).

Ces tag se présentent selon deux types différents : <XDtClass : …> <XDtMethod : …>

Page 45: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

45ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Les tag :

RechercheRecherche : <XDtClass:ifHasClassTag tagName=“NomTag">

UtilisationUtilisation : <XDtClass:classTagValue tagName=" NomTag " />

RechercheRecherche : <XDtMethod:ifHasMethodTag tagName=" NomTag ">

UtilisationUtilisation : <XDtMethod:methodTagValue tagName=" NomTag " />

Page 46: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

46ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Exemple: fichier « .xdt »

Page 47: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

47ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Récapitulation:

Pour générer du code avec XDoclet on doit :

Si on n’utilise pas les modules déjà développés pour XDoclet, créer son propre template de déploiement .xdt

Commenter son code avec les balises Javadoc spécifiques XDoclet.

Créer un fichier de déploiement build.xml pour Ant intégrant des demandes de génération de code XDoclet.

Lancer Ant sur le fichier build.xml => les fichiers désirés sont générés.

Page 48: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

48ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Demo

Page 49: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

49ANT,Xcolet,CVSLakdhar Yessin & Letaief Sana

CVS(Concurrent Version System)

ANT,XDoclet,CVS

Page 50: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

50ANT,Xcolet,CVSLakdhar Yessin & Letaief Sana

Plan :

Présentation de CVS

Logique de fonctionnement

Étapes de travail avec CVS (commandes)

Quelques clients CVS

Page 51: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

51ANT,Xcolet,CVSLakdhar Yessin & Letaief Sana

Présentation de CVS

CVS (Concurrent Version System) est un système de contrôle de versions de fichiers.

Développé par Cyclic Software et est sous licence GNU.

Initialement développé pour Unix, disponibleaussi sur MS Windows®

Page 52: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

52ANT,Xcolet,CVSLakdhar Yessin & Letaief Sana

Qualités de CVS :

► Aide à gérer le développement d’un projet effectué en parallèle par plusieurs utilisateurs :

Permet Accès concurrentiel par plusieurs développeurs à un même projet.

► Identifie les changements et les zones de conflit pour lesquelles un arbitrage humain est requis :

Visualisation des différences qui sont sources de conflits.

► Conserve la trace des modifications successives effectuées sur les projets :

Archivage et Suivi de l’historique Possibilité de retour à des versions anciennes

Page 53: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

53ANT,Xcolet,CVSLakdhar Yessin & Letaief Sana

Logique de fonctionnement :

Des outils existent: - RCS (Revisions Control System)

- SCCS (Source Code Control)

Modèle: Lock-Modify-UnlockLock-Modify-Unlock

( Contrôle par verrouillage)

Apparition de CVS : Modèle : Copy-Modify-Merge.Copy-Modify-Merge.

- CVSS,Subversion, Méta-CVS…

Copy-Modify-Merge ?Copy-Modify-Merge ?

Page 54: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

54ANT,Xcolet,CVSLakdhar Yessin & Letaief Sana

Copy-Modify-Merge ?Copy-Modify-Merge ?

CVS enregistreenregistre les projets dans un référentiel principal appelé Repository.

L’utilisateur effectue une copiecopie du projet dans le référentiel, puis la modifiemodifie.

L’utilisateur effectue une synchronisationsynchronisation avec le référentiel pour voir s’il n’y a pas eu entre temps une modification du référentiel.

CVS gère la nouvelle versionnouvelle version en résolvant un certain nombre de conflits et crée un historique des versions.

Page 55: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

55ANT,Xcolet,CVSLakdhar Yessin & Letaief Sana

Dépôt et copie de version :

user1 user2 user3

Dépôt de projet(s)

Copie de projet(s)

Standbox

Standbox

StandboxRéférentiel

Page 56: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

56ANT,Xcolet,CVSLakdhar Yessin & Letaief Sana

Étapes de travail avec CVS : Définition d’un référentiel : variable d’environnement

Ajout de(s) utilisateur(s)

Connexion à un projet

Copie du référentiel

Update

Commit

Page 57: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

57ANT,Xcolet,CVSLakdhar Yessin & Letaief Sana

Définition d’un référentiel :

set CVSROOT = c:\Dev_CVS\cvsrepset CVSROOT = c:\Dev_CVS\cvsrep

L’ajout de la variable d’environnement se fait grâce à la commande suivante :

Page 58: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

58ANT,Xcolet,CVSLakdhar Yessin & Letaief Sana

Ajouter de(s) utilisateur(s) :

cvs passwd –r <utilisateur> -a <password>cvs passwd –r <utilisateur> -a <password>

Exemple : cvs passwd –r <user1> -a <my_pass>Exemple : cvs passwd –r <user1> -a <my_pass>

L’ajout d’un nouvel utilisateur se fait comme suit :

Page 59: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

59ANT,Xcolet,CVSLakdhar Yessin & Letaief Sana

Connexion au référentiel :

set cvsroot=:<protocole>:<utilisateur>@<hôte>:/CheminProjetset cvsroot=:<protocole>:<utilisateur>@<hôte>:/CheminProjet

Exemple : Exemple : set cvsroot=:<pserver>:<utilisateur>@<hôte>:/CheminProjetset cvsroot=:<pserver>:<utilisateur>@<hôte>:/CheminProjet

Protocole pserverProtocole pserver : se connecter en tant que serveur : se connecter en tant que serveur de mot de passe. D’autres protocoles existent : de mot de passe. D’autres protocoles existent : sserver et ssh.sserver et ssh.

Pour pointer sur un projet, l’utilisateur se connecte au référentiel en utilisant la commande :

Page 60: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

60ANT,Xcolet,CVSLakdhar Yessin & Letaief Sana

Copie du projet :

La commande checkout "co" permet d’avoir une copie locale du projet il y a transfert d’une copie de ce projet à partir du référentiel dans le répertoire courant :

cvs co <Chemin du projet>cvs co <Chemin du projet>

Exemple : Cvs co c:\Dev_CVS\projet_cvs Exemple : Cvs co c:\Dev_CVS\projet_cvs

Page 61: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

61ANT,Xcolet,CVSLakdhar Yessin & Letaief Sana

Update :

Elle permet de mettre à jour les fichiers locaux à partir de versions situées sur le serveur :

cvs updatecvs update

Page 62: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

62ANT,Xcolet,CVSLakdhar Yessin & Letaief Sana

Commit :

cvs commitcvs commit

Une fois l’utilisateur termine et vérifie son travail, il utilise la commande suivante pour enregistrer sa version dans le référentiel:

Page 63: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

63ANT,Xcolet,CVSLakdhar Yessin & Letaief Sana

La fusion :

Problème : D'autres utilisateurs ont déjà publié une autre version : commit commit il y a détection de la compatibilité entre les modifications.

Si il y a compatibilitéSi il y a compatibilité fusion avec le reste du projet dans le référentiel.

• SinonSinon CVS indique un conflit. Les utilisateurs le

résolvent alors manuellement en se mettant d’accord pour valider la version finale.

Page 64: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

64ANT,Xcolet,CVSLakdhar Yessin & Letaief Sana

Clients CVS :

JCVS

Smart CVS

Intégration dans l’IDE Eclipse (Démo)

Turtoise

Page 65: Ant,XDoclet,CVS Réalisé par: Lakhdhar yessin Letaief Sana

65ANT,Xcolet,CVSLakdhar Yessin & Letaief Sana

Démo …Démo …