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

Post on 03-Apr-2015

110 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Ant,XDoclet,CVS

Réalisé par:Lakhdhar yessinLetaief Sana

2ANT,Xcolet,CVSLakdhar Yessin & Letaief Sana

Contenu :

ANT

XDoclet

CVS

3ANT,Xcolet,CVSLakdhar Yessin & Letaief Sana

ANT(Another Neat Tool)

ANT,XDoclet,CVS

4ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Plan

Qu’est ce que ANT ?

Purquoi ANT ?

Comment ça marche ?

Demo…

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.

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

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.

8ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Comment ça marche ?

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>

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=" . ">

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

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 »/>

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>

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"/>

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)

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.

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

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.

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.

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

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

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

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.

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.

25ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Integration dans les IDE :

Eclipse

WebSphere Studio Application Developer

JBuilder 8 Enterprise

Oracle9i JDeveloper

NetBeans / Sun ONE Studio

26ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Demo

Création de Task

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

27ANT,Xcolet,CVSLakdhar Yessin & Letaief Sana

ANT,XDoclet,CVS

XDoclet

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

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 .

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

31ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Présentation(3) :

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

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…

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" ...

*/

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" ...

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

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 ?

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

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

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 :

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>

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>

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>

43ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Pattern de génération de code :

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

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 : …>

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 " />

46ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Exemple: fichier « .xdt »

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.

48ANT,XDcolet,CVSLakhdhar Yessin & Letaief Sana

Demo

49ANT,Xcolet,CVSLakdhar Yessin & Letaief Sana

CVS(Concurrent Version System)

ANT,XDoclet,CVS

50ANT,Xcolet,CVSLakdhar Yessin & Letaief Sana

Plan :

Présentation de CVS

Logique de fonctionnement

Étapes de travail avec CVS (commandes)

Quelques clients CVS

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®

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

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 ?

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.

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

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

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 :

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 :

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 :

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

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

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:

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.

64ANT,Xcolet,CVSLakdhar Yessin & Letaief Sana

Clients CVS :

JCVS

Smart CVS

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

Turtoise

65ANT,Xcolet,CVSLakdhar Yessin & Letaief Sana

Démo …Démo …

top related