ant,xdoclet,cvs réalisé par: lakhdhar yessin letaief sana
Post on 03-Apr-2015
110 Views
Preview:
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