SlideShare ist ein Scribd-Unternehmen logo
1 von 46
Downloaden Sie, um offline zu lesen
INTÉGRATION DE HUDSON, MAVEN,
    SUBVERSION ET SONAR
1

              GL5 G1_2011/2012
                   INSAT
PLAN

   Introduction

   Maven

   Subversion

   Hudson

   Sonar

   Conclusion

                   2
I.          INTRODUCTION
    Les outils de gestion de la qualité tout au long du cycle de vie visent l’optimisation
     des performances et l'efficience des entreprises dans la réussite de leurs projets.
     Parmi les produits les plus souvent cités, figurent ceux issus de l’Open Source, et
     ensuite, ceux issus des catalogues Microsoft, Mercury, IBM et Serena..

    Tout au long de notre exposé, nous allons essayer d’illustrer quelques unes des
     fonctionnalités présentées à travers des exemples intégrant à la fois Maven 3,
     Hudson 2.1.2, Subversion 1.6.15 et Sonar 2.9 tantôt sur une machine windows 7
     et tantôt sur une machine mac OSX SnowLeopard.

    A travers cet exposé nous allons tenter de mettre en exergue l’adaptabilité de ces
     différents outils et leurs nombreuses possibilités d’utilisation.



                                                                                              3
II.     MAVEN

Plan:


   Historique

   Principes de Maven

   Cycle de vie

   Fonctionnalités

                         4
1)       HISTORIQUE DE MAVEN

   Maven 1est né en 2002.
   Il est d’abord apparu comme sous-projet du projet Jakarta Alexandria, avant
    de trouver refuge au sein du projet Apache Turbine.
   Il est devenu un projet Apache à part entière en 2003.
   Les défauts de Maven 1 l'ont empêché de véritablement percer dans le
    monde Java. Toutefois, Maven 1 a permis de roder les principaux
    mécanismes de Maven 2, et en particulier son principe de cycle de vie.
   Maven 2 sort en version finale à la fin de l'année 2005. Cette version
    apporte:
      Performances
      Stabilité
      Fonctionnalités
      etc.
   Maven 2 n'offre toutefois aucune compatibilité avec son prédécesseur         5
et oblige ainsi les équipes de développement à réécrire tout ou partie de leur
   fichier de configuration .
1)     HISTORIQUE DE MAVEN

Quelques problèmes rencontrés avec Maven 2 :

•    Complexité d’intégration d’autres outils avec Maven 2

•    Le pom.xml est trop verbeux.

•    Trop grande utilisation de plugins.

•    Documentation "officielle" peu fournie et assez peu intuitive.

•    XML parfois redondant, même en utilisant l'héritage.

•    Support pas encore parfait dans les IDE, mais les choses s'améliorent.

•    Développement et support des plugins "officiels" inégaux.

•    Manque de souplesse, de rigueur sur certains principes (difficile de sortir du
     cycle de vie par exemple).                                                       6
1)        HISTORIQUE DE MAVEN

Les nouveautés de Maven 3:

   Réécriture du coeur de Maven

   Rétrocompatibilité

   Maven apprend d'autres langues

   Composition des pom

   Extensibilité de Maven

   Construction du plan de build

   Accès aux repositories et gestion des dépendances

   Maven Shell
                                                                               7
   Support des IDE, de l’intégration continue, au sein des gestionnaires de
    repositories
2)      PRINCIPES DE           MAVEN

1. Convention over configuration
Portabilité et standardisation des projets
Meilleure lisibilité et compréhensibilité des projets
2. Exécution déclarative
Description du projet (dépendances, plugins) sous forme xml
Le fichier de configuration POM.xml est déclaratif
3. Réutilisation de la logique du build
Encapsulation de la logique du build dans des modules appelés plugins
Exécution de ces plugins dans un ordre défini par le « build life cycle »
Réutilisabilité de ces modules
4. Organisation cohérente des dépendances
Toute utilisation d’artéfacts dans une application Maven doit être signalée 8
  dans le POM.xml.
Maven se charge du management et de l’organisation de ces dépendances.
3)   CYCLE DE VIE DE MAVEN




                             9
3)       CYCLE DE VIE DE MAVEN

Voici les phases du cycle de vie par défaut :
1.   Validate: valider si le projet est correct et toutes les informations nécessaires
     sont disponibles
2.   Compile: compiler le code source du projet
3.   Test: test du code source compilé en utilisant un cadre approprié pour tester
     l'unité.
4.   Package: prendre le code compilé et le package dans son format distribuable,
     comme un JAR.
5.   Integration-test: processus et déployer le package si nécessaire dans un
     environnement où les tests d'intégration peuvent être exécutés
6.   Verify: exécuter un contrôle permettant de vérifier si le package est valable et
     répond aux critères de qualité
7.   Install: installer le paquet dans le dépôt local, pour une utilisation en tant que
     dépendance à d'autres projets au niveau local
                                                                                     10
8.   Deploy: fait dans un environnement d'intégration ou de libération, des copies à
     l'emballage final de la garde à distance pour le partage avec d'autres
     développeurs et des projets.
3)       CYCLE DE VIE DE MAVEN

Il y a deux autres phases du cycle de vie de maven :
Clean life cycle : efface les anciens fichier buildés
  pre-clean
  clean
  post-clean
Site life cycle: génère la documentation du site pour ce projet
  Pre-site
  Site
  Post-site
  Site-deploy



                                                                  11
4)        FONCTIONNALITÉS DE                    MAVEN

   Automatisation du build
   Modularisation du projet
   Gestion des dépendances
   Vérification de la qualité du code source
   Développement piloté par les tests
   Automatisation des tests d’acceptation
   Automatisation du déploiement




                                                        12
4)        FONCTIONNALITÉS DE                MAVEN

   Automatisation du build:
Traduire la liste des tâches quotidiennes à faire sous forme de script.
L'automatisation du build offre une gamme d'avantages:
    • l'accélération du build
    • l'élimination des mauvais builds
    • la normalisation dans les équipes et les organisations,
    • une efficacité accrue, et améliorations dans la qualité du produit.




                                                                            13
4)        FONCTIONNALITÉS DE              MAVEN

   Automatisation du build
   Modularisation du projet:
La modularisation du projet répond au besoin des grandes entreprises de
  diviser une application en plusieurs modules et ce tout en offrant la
  possibilité de travailler avec les mêmes ressources telles que les base de
  données existantes, les réseaux etc. Lorsqu’on parle de modularisation , on
  parle de projet parent et de projet fils et donc de fichier POM parent et de
  fichiers POM fils.




                                                                            14
   Exemple de fichier POM parent                      Exemple de fichier POM fils

<dependencyManagement>                              <dependency>
    <dependencies>                                      <groupId>mysql</groupId>
    <dependency>                                        <artifactId>mysql-connector-java</artifactId>
    <groupId>mysql</groupId>                        </dependency>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.2</version>
    </dependency>
    <dependencies>
</dependencyManagement>




      Le fichier POM Parent contient la définition complète de la
      dépendance.
      Mais tous les modules fils qui nécessitent cette dépendance
      contiennent un bout de la définition de la dépendance et ce pour
      éviter les conflits de versions.                                                                  15
4)        FONCTIONNALITÉS DE                   MAVEN

   Automatisation du build
   Modularisation du projet
   Gestion des dépendances:
Cette fonctionnalité est universellement reconnue comme étant l’une des
  meilleures fonctionnalités de Maven. Il de 6 scopes possibles, à savoir: cet
       Les dépendances de Maven disposent serait intéressant de présenter
                Compile: disponible multi modulaires.
  aspect de Maven pour les projetspar défaut dans le classpath
 Provided: suppose que soit le jdk, soit l’environnement apporte cette dépendance.
Dans les projets multi modulaires, les dépendances peuvent être définies dans
Runtime: dépendances nécessaires lors du runtime et sont spécifiées dans le runtime
  le fichier POM parent et peuvent être héritées à partir des fichiers POM fils
                                   classpath.
  de la façon et au moment voulus. Lela compilation et l’exécution des tests.
    Test: Dépendances nécessaires pour fait d’avoir une seule source de
  définition des System: la dépendance est toujours disponible.
                 dépendances rend le versioning des dépendances plus simple
  et ainsi les dépendances des grands projets sont organisées etl’élément
  Import: importe les dépendances spécifiées dans le POM incluse via gérables
  dans le temps.           <dependencyManagement>.



                                                                                      16
Définir la
                     liste des
                   dépendance                Interroger
                          s                      les
                                            repositories
  Interroger le                               distants.
repository local
pour trouver les
 dépendances
    utilisées.



                                 Télécharger
                                 depuis un
  Utiliser la                    repository distant
 dépendance                      les dépendances
pour construire                  absentes du
   le projet                     repository local.
4)        FONCTIONNALITÉS DE                 MAVEN

   Automatisation du build
   Modularisation du projet
   Gestion des dépendances
   Vérification de la qualité du code source:
Le plug-in Apache Maven PMD exécute automatiquement l'outil d’analyse du
  code sur le code source et génère un rapport de site avec des résultats.
  Dans une configuration typique, la génération échoue si PMD
  détecte les problèmes de qualité de la source.
   • pmd:pmd crée un site PMD de reporting basé sur les règles et la
      configuration du plugin.
   • pmd:cpd génère un rapport de l’outil CPD de détéction des copier/coller.
   • pmd:check vérifier si le rapport PMD est vide, sinon il fait échouer le
      build.
   • pmd:cpd-check vérifie si le rapport CPD est vide, sinon le build échoue.18
4)        FONCTIONNALITÉS DE                    MAVEN

   Automatisation du build
   Modularisation du projet
   Gestion des dépendances
   Vérification de la qualité du code source
   Développement piloté par les tests:
Pour Apache Maven les tests unitaires et les tests d'intégration font partie
  intégrante du cycle de vie du build, permettant ainsi aux programmeurs et
  aux équipes de facilement mettre en œuvre la pratique du TDD (Test Driven
  Development).




                                                                          19
4)        FONCTIONNALITÉS DE                    MAVEN

   Automatisation du build
   Modularisation du projet
   Gestion des dépendances
   Vérification de la qualité du code source
   Développement piloté par les tests
   Automatisation des tests d’acceptation:
Selenium est un framework d'automatisation des tests très populaire qui
  fonctionne avec un grand nombre de technologies, y compris Java, C #,
  Ruby, Groovy, Python, PHP et Perl.
Afin d'écrire des tests d'automatisation, Selenium fournit l'IDE sélénium, qui est
   un plugin pour Mozilla Firefox qui permet surtout d'enregistrer et de rejouer
   les tests et de les exporter dans différents langages, y compris Java.
   Le plugin Selenium Maven vous permet de spécifier des tests
   d’automatisation créé pour Selenium dans votre Projet Maven et de les        20
   intégrer avec le cycle de vie du build deMaven.
Le démarrage du serveur de Selenium nécessite la synchronisation avec la
 <plugins> test de pré-intégration du cycle de vie du build.
  phase de
         <plugin>
                  <groupId>org.codehaus.mojo</groupId>
                  <artifactId>selenium-maven-plugin</artifactId>
                  <executions>
                            <execution>
                                     <phase>pre-integration-test</phase>
                                     <goals>
                                              <goal>start-server</goal>
                                     </goals>
                                     <configuration>

         <background>true</background>
                                    </configuration>
                           </execution>
                  </executions>
         </plugin>
</plugins>

                                                                           21
<plugin>
Cependant, pour exécuter les tests Selenium, nous aurons également besoin
          <groupId>org.mortbay.jetty</groupId>
  de démarrer le serveur d'applications Web voici un exemple avec Jetty.
          <artifactId>maven-jetty-plugin</artifactId>
          <version>6.1.10</version>
          <executions>
                    <execution>
                            <id>start-jetty</id>
                            <phase>pre-integration-test</phase>
                            <goals> <goal>run</goal> </goals>
                            <configuration>

         <scanIntervalSeconds>0</scanIntervalSeconds>
                                    <daemon>true</daemon>
                           </configuration>
                  </execution>
                  <execution>
                           <id>stop-jetty</id>
                           <phase>post-integration-test</phase>
                           <goals> <goal>stop</goal> </goals>
                  </execution>
         </executions>                                                      22
</plugin>
4)        FONCTIONNALITÉS DE                    MAVEN

   Automatisation du build
   Modularisation du projet
   Gestion des dépendances
   Vérification de la qualité du code source
   Développement piloté par les tests
   Automatisation des tests d’acceptation
   Automatisation du déploiement:
Le plugin Maven Deploy est utilisé pour ajouter des artefacts (s) à un repository
  distant pendant la phase de déploiement de cycle de vie du build.
Ce plugin introduit deux objectifs:
  deploy: deploy: Pour déployer un projet et tous ses artefacts
  deploy: deploy -file: Pour déployer un seul fichier d’artefact

                                                                              23
III.    SUBVERSION

Plan:

   Présentation

   SVN vs CVS




                     24
1)      PRÉSENTATION DE SUBVERSION
   La gestion de versions est une activité qui consiste à maintenir
    l'ensemble des versions ou révisions d’un logiciel ou autre document.

    On peut ainsi mieux suivre et gérer le contenu, ou en restaurer une
    version antérieure, notamment si on fait une erreur dans la version la
    plus récente. Le suivi des versions est particulièrement indiqué
    lorsque plusieurs personnes collaborent à un projet ou lorsqu'un
    travail passe par plusieurs étapes de développement et de révision.
   Subversion est un logiciel de gestion de sources et de contrôle de
    versions.Il se veut comme successeur logique de CVS et nous provient
    du monde de l'open source

                                                                             25
1)      PRÉSENTATION DE SUBVERSION:
        INSTALLATION DE SUBVERSION
L’installation de SVN passe par plusieurs étapes:
   télécharger le plus récent svn-x.y.z-
   télécharger le plus récent setup.exe,
   télécharger le plus récent SVNService.zip
   télécharger l'installeur le plus récent de TORTOISEsvn à savoir
    TortoiseSVN-1.3.0.5416-svn-1.3.0.msi.




                                                                      26
1)      PRÉSENTATION DE SUBVERSION:
        NOTIONS DE BASE
   Repository:
Un dépôt (Repository) Subversion est l’emplacement central où sont
  stockées toutes les données relatives aux projets gérés. Le dépôt est
  accédé via une URL locale ou distante.
Le dépôt contient l’historique des versions des fichiers stockés, les logs
  enregistrés lors des modifications, les dates et auteurs de ces
  modifications, etc.
Un dépôt apparaît de l’extérieur comme un système de fichiers
  composé de répertoires au sein desquels on peut naviguer, lire et
  écrire selon les permissions accordées.




                                                                             27
1)   PRÉSENTATION DE SUBVERSION:
     LES COMMANDES CLIENT




                                   28
1)   PRÉSENTATION DE SUBVERSION:
     GESTION DES CONFLITS
il y a 4 différentes manières de résoudre ce genre de
   conflits:
 Retarder la résolution de conflit

 Fusionner les conflits à la main

 Copier un fichier dans le fichier actif

 Annuler les changements




                                                        29
2)     SVN VS CVS
Subversion présente les mêmes fonctionnalités de CVS, à savoir :
 La consultation et la possibilité de restauration des anciennes versions d'un
  fichier.
 Les raisons des modifications apportées et les auteurs de celles-ci.

 Les modifications de versions sont stockées sous forme de delta (différence
  entre deux versions) pour les fichiers.
Mais il a également quelques spécificités qui lui sont propres :
 Tracer les versions de répertoires, de fichiers et de droits sur les fichiers.

 Renommer un fichier ou un répertoire tout en conservant son historique.

 Les propagations de version (commit) sont atomiques. Une propagation réussit
  uniquement si tous les fichiers de la version sont correctement propagés.
 Les numéros de versions concernent une propagation et non les fichiers eux-
  mêmes.
 Subversion peut se coupler avec le protocole HTTP Webdav/deltaV.

 Les sauvegardes par delta sont aussi possibles sur les fichiers binaires.
                                                                               30
IV.     HUDSON



Plan:



   Présentation de l’intégration continue

   Outils de l’intégration continue

   Présentation de Hudson

                                             31
1)     PRÉSENTATION DE L’INTÉGRATION
       CONTINUE

Pour que l'Intégration Continue puisse se faire correctement, il faut:

   Partager les sources du projet via un serveur de gestion de
    contrôle des sources SCM tel que CVS ou SVN.

   L’équipe de développement postent régulièrement les
    modifications apportées au code.

   Disposer de tests unitaires qui seront exécutés par Junit ou
    TestNG.


                                                                    32
1)      PRÉSENTATION DE L’INTÉGRATION
        CONTINUE

Les intérêts de l’Intégration Continue:

   Vérification fréquente du code, et de sa bonne compilation.

   Réalisation des tests unitaire et / ou fonctionnels, voire tests
    d'intégration.

   Mise à disposition éventuelle d'une version testable comportant les
    dernières modifications du code.

   Possibilité de créer des rapports périodiques exprimant la qualité du
    code, la couverture des tests, etc. Si le projet est configuré pour Maven,
    alors on pourra créer le site du projet qui contiendra l'ensemble de ces
                                                                            33
    rapports.
2)      OUTILS DE L’INTÉGRATION CONTINUE

   Anthill Pro.

   Atlassian Bamboo.

   Build Forge.

   Cruise Control : l'un des outils d'IC les plus anciens et plutôt
    populaire.

   Apache Continuum : l'outil " officiel " de la communauté Maven.

   Hudson

   Luntbuild (et Luntbuild pro).
                                                                       34
   JetBrains TeamCity.
3)      PRÉSENTATION DE HUDSON:
        DÉFINITION
   Hudson est un outil open source d'intégration continue, fonctionnant dans un
    conteneur de servlets, ou en mode autonome avec son propre serveur Web
    embarqué.

   Effectuer des builds et des tests: Ant, Maven, MSBuild, …

   Check out du code source: Subversion, Mercurial, …

   Réaliser des tests unitaires: Junit

   Notifier les utilisateurs: E-mail, RSS, …

   Gérer la qualité du code: CheckStyle


                                                                             35
3)      PRÉSENTATION DE HUDSON:
        FONCTIONNALITÉS PRINCIPALES
   Indicateurs:
      Statut d’un projet
      Santé d’un projet
      Tendance d’un projet

   Maître et esclaves

   Matrice de configuration

   Gestion des utilisateurs

   Sécurité

   Rapports de tests

   Hudson dispose de la possibilité d'étendre ses capacités grâce à l'ajout de
    plugins et à la gestions de ceux-ci mais également grâce à la création   de
                                                                              36
    nouveaux plugins
V.      SONAR



Plan:



   Présentation du contrôle de la qualité



   Présentation de Sonar
                                             37
1)        PRÉSENTATION DU CONTRÔLE DE
          QUALITÉ

   Sonar offre une solution performante du contrôle de la qualité d‘un logiciel.

   Dans le monde informatique en général, et en Java en particulier, la qualité

    d'une application va être directement liée à la qualité du code

        exécution de tests unitaires

        analyse de la couverture du code par ces tests

        vérifications du respect des règles de codage, etc.

   Le contrôle de la qualité va donc pousser l'équipe de développement à

    adopter et à respecter certains standards de développement.

   Le but : rendre le code plus sûr, mais de permettre d'y déceler les erreurs le

    plus rapidement possible et donc de les corriger !                               38
2)   PRÉSENTATION DE SONAR:
         HISTORIQUE ET FONCTION

   Sonar est un outil open source initialement développé par la société
    suisse Hortis.

   Depuis novembre 2008, c'est la société suisse SonarSource qui se
    charge du développement et du support de Sonar.

    Le but principal de cet outil est de fournir une analyse complète de
    la qualité d'une application en fournissant de nombreuses
    statistiques (ou métriques) sur ses projets.

   Ces données permettent ainsi d'évaluer la qualité du code, et d'en
                                                                       39
    connaître l'évolution au cours du développement.
2) Présentation de Sonar:
                     Architecture


un exécuteur (basé                  le serveur web
 sur Maven 2/3, Ant                  qui permet la
   ou un exécuteur                  navigation et la
  Java) dont le but                consultation des
  sera de lancer un                    analyses
   certain nombre                  réalisées sur les
d'outils d'analyse, et                  projets
   d'en agréger les
       résultats
               une base de         éventuellement un
               données, qui            plugin pour
                  stocke et         Eclipse qui offre
                historise les         une meilleure
             informations sur        intégration des
                                                   40
                 les projets       données de Sonar
                                    dans son outil de
               surveillés par
                                    développement.
                    Sonar
2)        PRÉSENTATION DE SONAR:
              PRINCIPALES FONCTIONNALITÉS
   Tableau de bord complet des différents projets suivis.

   Détection rapide du code à risque.

   Mesures quantitatives : nombre de classes, duplication de code, etc.

   Mesures qualitatives : couverture et taux de réussite des tests, complexité du code, respect des

    règles de codage...

   Historiques des statistiques

   Support de plus de 600 règles de qualité.

   Gestion de profils pour les règles de codage.

   Visualisation du code source, surlignant les violations des règles de codage.

   Fonction "Time machine" permettant de comparer plusieurs versions d'une application.
                                                                                                 41
   Identification des points faibles d'un projet.

   Support des plugins.
3)       FONCTIONNEMENT DE SONAR:
         OUTILS EXTERNES

   Afin d'analyser un projet Java, Sonar va se baser en partie sur des outils
    externes, dont :




                                                                                 42
3)        FONCTIONNEMENT DE SONAR:
          VISUALISATION DES DONNÉES

   Liste des projets
   Vue le nom du projet
        d’un projet
         sa version
        Vue «
   Les la tailleDashboard»
        métriquesprojet
                   du
      Vue « Components»
      le taux de du code source:
 Visualisation respect des règles
      Vue "Violations drilldown»
      quand a été réalisé le dernier build
       Vue « Time Machine»
      les principaux liens (vers l'application, le site du projet, le serveur
      Vue "Clouds«
      d'intégration continue, le serveur de gestion des sources, etc.)
      Vue "Design«
      les éventuelles alertes sur le projet ; etc.
      Vue "Hotspots«
         Vue "Libraries"
         Vue "Settings«
         Vue "Project Roles"




                                                                                 43
4)        INTÉGRATION DE SONAR
    <profile>
             <id>sonar</id>
   Si votre projet utilise déjà Maven 2 ou 3, le plus simple est de faire appel au
             <activation>
                        <activeByDefault>true</activeByDefault>
    plugin Maven de Sonar. La première chose à faire est de définir quelques
             </activation>
    paramètres Maven à placer de préférence dans son fichier settings.xml.
             <properties>
   Nous redéfinissons là lesmysql -->
             <!-- example pour paramètres de connexion à la base de données,
    ainsi que l'URL du serveur Sonar.
                <sonar.jdbc.url>jdbc:derby://localhost:1527/sonar;create=true
                </sonar.jdbc.url>
   Il suffit ensuite de lancer la commande suivante : mvn sonar:sonar
             <sonar.jdbc.driverClassName>org.apache.derby.jdbc.ClientDriver
             </sonar.jdbc.driverClassName>
Nous venons de voir comment lancer l'analyse Sonar manuellement. Mais il est
                                  <sonar.jdbc.username>sonar</sonar.jdbc.username>
  bien plus profitable de faire réaliser cette tâche automatiquement, grâce à un
                                  <sonar.jdbc.password>sonar</sonar.jdbc.password>
  outil d'intégration continue <!-- server on a remote host -->
                                  comme Hudson.
             <sonar.host.url>http://127.0.0.1:9000/</sonar.host.url>
             </properties>
    </profile>
                                                                                 44
VII. CONCLUSION
   Cet exposé nous a permis de mettre en avant la mise
    en œuvre de la forge de développement et ce dans le
    but de garantir la qualité logicielle.

   Ces outils présentant l’avantage d’être assez faciles
    d’utilisation et de configuration, néanmoins plusieurs
    problèmes surviennent lors de leur mise en pratique et
    ce à cause de facteurs externes : en l’occurrence
    l’utilisation des serveurs d’application, l’installation de
    mysql.. etc                                                   45
Merci pour votre attention



46

Weitere ähnliche Inhalte

Was ist angesagt?

Presentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationPresentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationStéphane Traumat
 
Spring Meetup Paris - Back to the basics of Spring (Boot)
Spring Meetup Paris - Back to the basics of Spring (Boot)Spring Meetup Paris - Back to the basics of Spring (Boot)
Spring Meetup Paris - Back to the basics of Spring (Boot)Eric SIBER
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache MavenArnaud Héritier
 
20091020 - Normandy Jug - Builders Battle
20091020 - Normandy Jug - Builders Battle20091020 - Normandy Jug - Builders Battle
20091020 - Normandy Jug - Builders BattleArnaud Héritier
 
Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon Ippon
 
Presentation of GWT 2.4 (PDF version)
Presentation of GWT 2.4 (PDF version)Presentation of GWT 2.4 (PDF version)
Presentation of GWT 2.4 (PDF version)Celinio Fernandes
 
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et MobileNouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et MobileIppon
 
Les dessous du framework spring
Les dessous du framework springLes dessous du framework spring
Les dessous du framework springAntoine Rey
 
Introduction aux problématiques des architectures distribuées
Introduction aux problématiques des architectures distribuéesIntroduction aux problématiques des architectures distribuées
Introduction aux problématiques des architectures distribuéesSOAT
 
Presentation of GWT 2.4 (PowerPoint version)
Presentation of GWT 2.4 (PowerPoint version)Presentation of GWT 2.4 (PowerPoint version)
Presentation of GWT 2.4 (PowerPoint version)Celinio Fernandes
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Ippon
 
GWT Principes & Techniques
GWT Principes & TechniquesGWT Principes & Techniques
GWT Principes & TechniquesRachid NID SAID
 
Presentation Rex Methodes Agiles
Presentation Rex Methodes AgilesPresentation Rex Methodes Agiles
Presentation Rex Methodes AgilesIppon
 
JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924Gregory Boissinot
 
Liferay france symposium 2012 - montée de version d’une instance liferay
Liferay france symposium 2012 - montée de version d’une instance liferayLiferay france symposium 2012 - montée de version d’une instance liferay
Liferay france symposium 2012 - montée de version d’une instance liferaySébastien Le Marchand
 
NightClazz Build Tools & Continuous Delivery Avancé
NightClazz Build Tools & Continuous Delivery AvancéNightClazz Build Tools & Continuous Delivery Avancé
NightClazz Build Tools & Continuous Delivery AvancéZenika
 

Was ist angesagt? (20)

Présentation1
Présentation1Présentation1
Présentation1
 
Soiree Maven 2
Soiree Maven 2Soiree Maven 2
Soiree Maven 2
 
Maven
MavenMaven
Maven
 
Maven
MavenMaven
Maven
 
Presentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationPresentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub Foundation
 
Spring Meetup Paris - Back to the basics of Spring (Boot)
Spring Meetup Paris - Back to the basics of Spring (Boot)Spring Meetup Paris - Back to the basics of Spring (Boot)
Spring Meetup Paris - Back to the basics of Spring (Boot)
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache Maven
 
20091020 - Normandy Jug - Builders Battle
20091020 - Normandy Jug - Builders Battle20091020 - Normandy Jug - Builders Battle
20091020 - Normandy Jug - Builders Battle
 
Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon
 
Presentation of GWT 2.4 (PDF version)
Presentation of GWT 2.4 (PDF version)Presentation of GWT 2.4 (PDF version)
Presentation of GWT 2.4 (PDF version)
 
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et MobileNouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
 
Les dessous du framework spring
Les dessous du framework springLes dessous du framework spring
Les dessous du framework spring
 
Introduction aux problématiques des architectures distribuées
Introduction aux problématiques des architectures distribuéesIntroduction aux problématiques des architectures distribuées
Introduction aux problématiques des architectures distribuées
 
Presentation of GWT 2.4 (PowerPoint version)
Presentation of GWT 2.4 (PowerPoint version)Presentation of GWT 2.4 (PowerPoint version)
Presentation of GWT 2.4 (PowerPoint version)
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0
 
GWT Principes & Techniques
GWT Principes & TechniquesGWT Principes & Techniques
GWT Principes & Techniques
 
Presentation Rex Methodes Agiles
Presentation Rex Methodes AgilesPresentation Rex Methodes Agiles
Presentation Rex Methodes Agiles
 
JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924
 
Liferay france symposium 2012 - montée de version d’une instance liferay
Liferay france symposium 2012 - montée de version d’une instance liferayLiferay france symposium 2012 - montée de version d’une instance liferay
Liferay france symposium 2012 - montée de version d’une instance liferay
 
NightClazz Build Tools & Continuous Delivery Avancé
NightClazz Build Tools & Continuous Delivery AvancéNightClazz Build Tools & Continuous Delivery Avancé
NightClazz Build Tools & Continuous Delivery Avancé
 

Andere mochten auch

Présentation sur Maven 2 et petit retour d'expérience
Présentation sur Maven 2 et petit retour d'expériencePrésentation sur Maven 2 et petit retour d'expérience
Présentation sur Maven 2 et petit retour d'expérienceKhanh Maudoux
 
Análise de qualidade de código com Sonar - Fernando Boaglio
Análise de qualidade de código com Sonar - Fernando Boaglio Análise de qualidade de código com Sonar - Fernando Boaglio
Análise de qualidade de código com Sonar - Fernando Boaglio Fernando Boaglio
 
Continuous inspection with Sonar
Continuous inspection with SonarContinuous inspection with Sonar
Continuous inspection with Sonargaudol
 
Maven for Dummies
Maven for DummiesMaven for Dummies
Maven for DummiesTomer Gabel
 
Telecharger Cours java pour debutant pdf
Telecharger Cours java pour debutant pdfTelecharger Cours java pour debutant pdf
Telecharger Cours java pour debutant pdfwebreaker
 
Maven 3 Overview
Maven 3  OverviewMaven 3  Overview
Maven 3 OverviewMike Ensor
 
An Introduction to Maven
An Introduction to MavenAn Introduction to Maven
An Introduction to MavenVadym Lotar
 
Getting Started with Angular 2
Getting Started with Angular 2Getting Started with Angular 2
Getting Started with Angular 2FITC
 
Methodologies de Developpement Agiles : Scrum et XP
Methodologies de Developpement Agiles : Scrum et XPMethodologies de Developpement Agiles : Scrum et XP
Methodologies de Developpement Agiles : Scrum et XPNicolas Perriault
 
Alphorm.com Formation Java,avancé OCP (1Z0-804)
Alphorm.com Formation Java,avancé OCP (1Z0-804)Alphorm.com Formation Java,avancé OCP (1Z0-804)
Alphorm.com Formation Java,avancé OCP (1Z0-804)Alphorm
 

Andere mochten auch (20)

Présentation sur Maven 2 et petit retour d'expérience
Présentation sur Maven 2 et petit retour d'expériencePrésentation sur Maven 2 et petit retour d'expérience
Présentation sur Maven 2 et petit retour d'expérience
 
Análise de qualidade de código com Sonar - Fernando Boaglio
Análise de qualidade de código com Sonar - Fernando Boaglio Análise de qualidade de código com Sonar - Fernando Boaglio
Análise de qualidade de código com Sonar - Fernando Boaglio
 
Continuous inspection with Sonar
Continuous inspection with SonarContinuous inspection with Sonar
Continuous inspection with Sonar
 
Maven Overview
Maven OverviewMaven Overview
Maven Overview
 
Maven for Dummies
Maven for DummiesMaven for Dummies
Maven for Dummies
 
Tutoriel java
Tutoriel javaTutoriel java
Tutoriel java
 
Telecharger Cours java pour debutant pdf
Telecharger Cours java pour debutant pdfTelecharger Cours java pour debutant pdf
Telecharger Cours java pour debutant pdf
 
Maven 3 Overview
Maven 3  OverviewMaven 3  Overview
Maven 3 Overview
 
Sonar Metrics
Sonar MetricsSonar Metrics
Sonar Metrics
 
Maven Introduction
Maven IntroductionMaven Introduction
Maven Introduction
 
Demystifying Maven
Demystifying MavenDemystifying Maven
Demystifying Maven
 
An Introduction to Maven
An Introduction to MavenAn Introduction to Maven
An Introduction to Maven
 
Continuous delivery-with-maven
Continuous delivery-with-mavenContinuous delivery-with-maven
Continuous delivery-with-maven
 
Méthodes agiles & Scrum
Méthodes agiles & ScrumMéthodes agiles & Scrum
Méthodes agiles & Scrum
 
Jenkins with SonarQube
Jenkins with SonarQubeJenkins with SonarQube
Jenkins with SonarQube
 
Getting Started with Angular 2
Getting Started with Angular 2Getting Started with Angular 2
Getting Started with Angular 2
 
Methodologies de Developpement Agiles : Scrum et XP
Methodologies de Developpement Agiles : Scrum et XPMethodologies de Developpement Agiles : Scrum et XP
Methodologies de Developpement Agiles : Scrum et XP
 
Alphorm.com Formation Java,avancé OCP (1Z0-804)
Alphorm.com Formation Java,avancé OCP (1Z0-804)Alphorm.com Formation Java,avancé OCP (1Z0-804)
Alphorm.com Formation Java,avancé OCP (1Z0-804)
 
F bd t partie 2c _ as_i
F bd t partie 2c _ as_iF bd t partie 2c _ as_i
F bd t partie 2c _ as_i
 
Fik kepler
Fik keplerFik kepler
Fik kepler
 

Ähnlich wie Sonar-Hodson-Maven

Qualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et WebQualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et WebChristophe Rochefolle
 
Rex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - EnsimRex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - EnsimLaurent Broudoux
 
Architecture microservices avec docker
Architecture microservices avec dockerArchitecture microservices avec docker
Architecture microservices avec dockergcatt
 
Drupagora - Les clés de la réussite d'un projet Drupal
Drupagora - Les clés de la réussite d'un projet DrupalDrupagora - Les clés de la réussite d'un projet Drupal
Drupagora - Les clés de la réussite d'un projet DrupalCore-Techs
 
Spring boot anane maryem ben aziza syrine
Spring boot anane maryem ben aziza syrineSpring boot anane maryem ben aziza syrine
Spring boot anane maryem ben aziza syrineSyrine Ben aziza
 
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdfJFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdfqsdqsd4
 
Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Julien Dubois
 
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptxJFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptxAnisSalhi3
 
Scub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreScub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreStéphane Traumat
 
Devops@Kelkoo - Agile Grenoble 2012
Devops@Kelkoo - Agile Grenoble 2012Devops@Kelkoo - Agile Grenoble 2012
Devops@Kelkoo - Agile Grenoble 2012Nicolas Capponi
 
Workshop Spring - Session 1 - L'offre Spring et les bases
Workshop Spring  - Session 1 - L'offre Spring et les basesWorkshop Spring  - Session 1 - L'offre Spring et les bases
Workshop Spring - Session 1 - L'offre Spring et les basesAntoine Rey
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...Jasmine Conseil
 

Ähnlich wie Sonar-Hodson-Maven (20)

Qualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et WebQualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et Web
 
Octo Maven.pdf
Octo Maven.pdfOcto Maven.pdf
Octo Maven.pdf
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
 
Spring
SpringSpring
Spring
 
Maven et industrialisation du logiciel
Maven et industrialisation du logicielMaven et industrialisation du logiciel
Maven et industrialisation du logiciel
 
Etude des Frameworks PHP
Etude des Frameworks PHPEtude des Frameworks PHP
Etude des Frameworks PHP
 
Rex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - EnsimRex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - Ensim
 
Architecture microservices avec docker
Architecture microservices avec dockerArchitecture microservices avec docker
Architecture microservices avec docker
 
Drupagora - Les clés de la réussite d'un projet Drupal
Drupagora - Les clés de la réussite d'un projet DrupalDrupagora - Les clés de la réussite d'un projet Drupal
Drupagora - Les clés de la réussite d'un projet Drupal
 
Spring boot anane maryem ben aziza syrine
Spring boot anane maryem ben aziza syrineSpring boot anane maryem ben aziza syrine
Spring boot anane maryem ben aziza syrine
 
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdfJFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
 
Spring mvc
Spring mvcSpring mvc
Spring mvc
 
Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017
 
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptxJFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
 
Scub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreScub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libre
 
Devops@Kelkoo - Agile Grenoble 2012
Devops@Kelkoo - Agile Grenoble 2012Devops@Kelkoo - Agile Grenoble 2012
Devops@Kelkoo - Agile Grenoble 2012
 
Cours spring
Cours springCours spring
Cours spring
 
Workshop Spring - Session 1 - L'offre Spring et les bases
Workshop Spring  - Session 1 - L'offre Spring et les basesWorkshop Spring  - Session 1 - L'offre Spring et les bases
Workshop Spring - Session 1 - L'offre Spring et les bases
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
 

Mehr von Slimen Belhaj Ali (19)

Solution générique pour la résolution des problèmes statiques de tournées de ...
Solution générique pour la résolution des problèmes statiques de tournées de ...Solution générique pour la résolution des problèmes statiques de tournées de ...
Solution générique pour la résolution des problèmes statiques de tournées de ...
 
BPMN,jBPM,BPEL
BPMN,jBPM,BPELBPMN,jBPM,BPEL
BPMN,jBPM,BPEL
 
Websphere
WebsphereWebsphere
Websphere
 
Sécurisation des services WCF avec WS-Security
Sécurisation des services WCF avec WS-SecuritySécurisation des services WCF avec WS-Security
Sécurisation des services WCF avec WS-Security
 
JasperReport
JasperReportJasperReport
JasperReport
 
ERP Universitaire
ERP UniversitaireERP Universitaire
ERP Universitaire
 
JSF 2.0
JSF 2.0JSF 2.0
JSF 2.0
 
Tutorial
TutorialTutorial
Tutorial
 
Spring security
Spring securitySpring security
Spring security
 
Spring mvc 3.0 web flow
Spring mvc 3.0 web flowSpring mvc 3.0 web flow
Spring mvc 3.0 web flow
 
Share point 2010
Share point 2010Share point 2010
Share point 2010
 
TFS
TFSTFS
TFS
 
objective C
objective Cobjective C
objective C
 
Android
AndroidAndroid
Android
 
Hibernate 3
Hibernate 3Hibernate 3
Hibernate 3
 
WPF MVVM
WPF MVVMWPF MVVM
WPF MVVM
 
Jboss Seam
Jboss SeamJboss Seam
Jboss Seam
 
Google appengine&guice
Google appengine&guiceGoogle appengine&guice
Google appengine&guice
 
Administration glassfish 3
Administration glassfish 3Administration glassfish 3
Administration glassfish 3
 

Sonar-Hodson-Maven

  • 1. INTÉGRATION DE HUDSON, MAVEN, SUBVERSION ET SONAR 1 GL5 G1_2011/2012 INSAT
  • 2. PLAN  Introduction  Maven  Subversion  Hudson  Sonar  Conclusion 2
  • 3. I. INTRODUCTION  Les outils de gestion de la qualité tout au long du cycle de vie visent l’optimisation des performances et l'efficience des entreprises dans la réussite de leurs projets. Parmi les produits les plus souvent cités, figurent ceux issus de l’Open Source, et ensuite, ceux issus des catalogues Microsoft, Mercury, IBM et Serena..  Tout au long de notre exposé, nous allons essayer d’illustrer quelques unes des fonctionnalités présentées à travers des exemples intégrant à la fois Maven 3, Hudson 2.1.2, Subversion 1.6.15 et Sonar 2.9 tantôt sur une machine windows 7 et tantôt sur une machine mac OSX SnowLeopard.  A travers cet exposé nous allons tenter de mettre en exergue l’adaptabilité de ces différents outils et leurs nombreuses possibilités d’utilisation. 3
  • 4. II. MAVEN Plan:  Historique  Principes de Maven  Cycle de vie  Fonctionnalités 4
  • 5. 1) HISTORIQUE DE MAVEN  Maven 1est né en 2002.  Il est d’abord apparu comme sous-projet du projet Jakarta Alexandria, avant de trouver refuge au sein du projet Apache Turbine.  Il est devenu un projet Apache à part entière en 2003.  Les défauts de Maven 1 l'ont empêché de véritablement percer dans le monde Java. Toutefois, Maven 1 a permis de roder les principaux mécanismes de Maven 2, et en particulier son principe de cycle de vie.  Maven 2 sort en version finale à la fin de l'année 2005. Cette version apporte:  Performances  Stabilité  Fonctionnalités  etc.  Maven 2 n'offre toutefois aucune compatibilité avec son prédécesseur 5 et oblige ainsi les équipes de développement à réécrire tout ou partie de leur fichier de configuration .
  • 6. 1) HISTORIQUE DE MAVEN Quelques problèmes rencontrés avec Maven 2 : • Complexité d’intégration d’autres outils avec Maven 2 • Le pom.xml est trop verbeux. • Trop grande utilisation de plugins. • Documentation "officielle" peu fournie et assez peu intuitive. • XML parfois redondant, même en utilisant l'héritage. • Support pas encore parfait dans les IDE, mais les choses s'améliorent. • Développement et support des plugins "officiels" inégaux. • Manque de souplesse, de rigueur sur certains principes (difficile de sortir du cycle de vie par exemple). 6
  • 7. 1) HISTORIQUE DE MAVEN Les nouveautés de Maven 3:  Réécriture du coeur de Maven  Rétrocompatibilité  Maven apprend d'autres langues  Composition des pom  Extensibilité de Maven  Construction du plan de build  Accès aux repositories et gestion des dépendances  Maven Shell 7  Support des IDE, de l’intégration continue, au sein des gestionnaires de repositories
  • 8. 2) PRINCIPES DE MAVEN 1. Convention over configuration Portabilité et standardisation des projets Meilleure lisibilité et compréhensibilité des projets 2. Exécution déclarative Description du projet (dépendances, plugins) sous forme xml Le fichier de configuration POM.xml est déclaratif 3. Réutilisation de la logique du build Encapsulation de la logique du build dans des modules appelés plugins Exécution de ces plugins dans un ordre défini par le « build life cycle » Réutilisabilité de ces modules 4. Organisation cohérente des dépendances Toute utilisation d’artéfacts dans une application Maven doit être signalée 8 dans le POM.xml. Maven se charge du management et de l’organisation de ces dépendances.
  • 9. 3) CYCLE DE VIE DE MAVEN 9
  • 10. 3) CYCLE DE VIE DE MAVEN Voici les phases du cycle de vie par défaut : 1. Validate: valider si le projet est correct et toutes les informations nécessaires sont disponibles 2. Compile: compiler le code source du projet 3. Test: test du code source compilé en utilisant un cadre approprié pour tester l'unité. 4. Package: prendre le code compilé et le package dans son format distribuable, comme un JAR. 5. Integration-test: processus et déployer le package si nécessaire dans un environnement où les tests d'intégration peuvent être exécutés 6. Verify: exécuter un contrôle permettant de vérifier si le package est valable et répond aux critères de qualité 7. Install: installer le paquet dans le dépôt local, pour une utilisation en tant que dépendance à d'autres projets au niveau local 10 8. Deploy: fait dans un environnement d'intégration ou de libération, des copies à l'emballage final de la garde à distance pour le partage avec d'autres développeurs et des projets.
  • 11. 3) CYCLE DE VIE DE MAVEN Il y a deux autres phases du cycle de vie de maven : Clean life cycle : efface les anciens fichier buildés pre-clean clean post-clean Site life cycle: génère la documentation du site pour ce projet Pre-site Site Post-site Site-deploy 11
  • 12. 4) FONCTIONNALITÉS DE MAVEN  Automatisation du build  Modularisation du projet  Gestion des dépendances  Vérification de la qualité du code source  Développement piloté par les tests  Automatisation des tests d’acceptation  Automatisation du déploiement 12
  • 13. 4) FONCTIONNALITÉS DE MAVEN  Automatisation du build: Traduire la liste des tâches quotidiennes à faire sous forme de script. L'automatisation du build offre une gamme d'avantages: • l'accélération du build • l'élimination des mauvais builds • la normalisation dans les équipes et les organisations, • une efficacité accrue, et améliorations dans la qualité du produit. 13
  • 14. 4) FONCTIONNALITÉS DE MAVEN  Automatisation du build  Modularisation du projet: La modularisation du projet répond au besoin des grandes entreprises de diviser une application en plusieurs modules et ce tout en offrant la possibilité de travailler avec les mêmes ressources telles que les base de données existantes, les réseaux etc. Lorsqu’on parle de modularisation , on parle de projet parent et de projet fils et donc de fichier POM parent et de fichiers POM fils. 14
  • 15. Exemple de fichier POM parent  Exemple de fichier POM fils <dependencyManagement> <dependency> <dependencies> <groupId>mysql</groupId> <dependency> <artifactId>mysql-connector-java</artifactId> <groupId>mysql</groupId> </dependency> <artifactId>mysql-connector-java</artifactId> <version>5.1.2</version> </dependency> <dependencies> </dependencyManagement> Le fichier POM Parent contient la définition complète de la dépendance. Mais tous les modules fils qui nécessitent cette dépendance contiennent un bout de la définition de la dépendance et ce pour éviter les conflits de versions. 15
  • 16. 4) FONCTIONNALITÉS DE MAVEN  Automatisation du build  Modularisation du projet  Gestion des dépendances: Cette fonctionnalité est universellement reconnue comme étant l’une des meilleures fonctionnalités de Maven. Il de 6 scopes possibles, à savoir: cet Les dépendances de Maven disposent serait intéressant de présenter Compile: disponible multi modulaires. aspect de Maven pour les projetspar défaut dans le classpath Provided: suppose que soit le jdk, soit l’environnement apporte cette dépendance. Dans les projets multi modulaires, les dépendances peuvent être définies dans Runtime: dépendances nécessaires lors du runtime et sont spécifiées dans le runtime le fichier POM parent et peuvent être héritées à partir des fichiers POM fils classpath. de la façon et au moment voulus. Lela compilation et l’exécution des tests. Test: Dépendances nécessaires pour fait d’avoir une seule source de définition des System: la dépendance est toujours disponible. dépendances rend le versioning des dépendances plus simple et ainsi les dépendances des grands projets sont organisées etl’élément Import: importe les dépendances spécifiées dans le POM incluse via gérables dans le temps. <dependencyManagement>. 16
  • 17. Définir la liste des dépendance Interroger s les repositories Interroger le distants. repository local pour trouver les dépendances utilisées. Télécharger depuis un Utiliser la repository distant dépendance les dépendances pour construire absentes du le projet repository local.
  • 18. 4) FONCTIONNALITÉS DE MAVEN  Automatisation du build  Modularisation du projet  Gestion des dépendances  Vérification de la qualité du code source: Le plug-in Apache Maven PMD exécute automatiquement l'outil d’analyse du code sur le code source et génère un rapport de site avec des résultats. Dans une configuration typique, la génération échoue si PMD détecte les problèmes de qualité de la source. • pmd:pmd crée un site PMD de reporting basé sur les règles et la configuration du plugin. • pmd:cpd génère un rapport de l’outil CPD de détéction des copier/coller. • pmd:check vérifier si le rapport PMD est vide, sinon il fait échouer le build. • pmd:cpd-check vérifie si le rapport CPD est vide, sinon le build échoue.18
  • 19. 4) FONCTIONNALITÉS DE MAVEN  Automatisation du build  Modularisation du projet  Gestion des dépendances  Vérification de la qualité du code source  Développement piloté par les tests: Pour Apache Maven les tests unitaires et les tests d'intégration font partie intégrante du cycle de vie du build, permettant ainsi aux programmeurs et aux équipes de facilement mettre en œuvre la pratique du TDD (Test Driven Development). 19
  • 20. 4) FONCTIONNALITÉS DE MAVEN  Automatisation du build  Modularisation du projet  Gestion des dépendances  Vérification de la qualité du code source  Développement piloté par les tests  Automatisation des tests d’acceptation: Selenium est un framework d'automatisation des tests très populaire qui fonctionne avec un grand nombre de technologies, y compris Java, C #, Ruby, Groovy, Python, PHP et Perl. Afin d'écrire des tests d'automatisation, Selenium fournit l'IDE sélénium, qui est un plugin pour Mozilla Firefox qui permet surtout d'enregistrer et de rejouer les tests et de les exporter dans différents langages, y compris Java. Le plugin Selenium Maven vous permet de spécifier des tests d’automatisation créé pour Selenium dans votre Projet Maven et de les 20 intégrer avec le cycle de vie du build deMaven.
  • 21. Le démarrage du serveur de Selenium nécessite la synchronisation avec la <plugins> test de pré-intégration du cycle de vie du build. phase de <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>selenium-maven-plugin</artifactId> <executions> <execution> <phase>pre-integration-test</phase> <goals> <goal>start-server</goal> </goals> <configuration> <background>true</background> </configuration> </execution> </executions> </plugin> </plugins> 21
  • 22. <plugin> Cependant, pour exécuter les tests Selenium, nous aurons également besoin <groupId>org.mortbay.jetty</groupId> de démarrer le serveur d'applications Web voici un exemple avec Jetty. <artifactId>maven-jetty-plugin</artifactId> <version>6.1.10</version> <executions> <execution> <id>start-jetty</id> <phase>pre-integration-test</phase> <goals> <goal>run</goal> </goals> <configuration> <scanIntervalSeconds>0</scanIntervalSeconds> <daemon>true</daemon> </configuration> </execution> <execution> <id>stop-jetty</id> <phase>post-integration-test</phase> <goals> <goal>stop</goal> </goals> </execution> </executions> 22 </plugin>
  • 23. 4) FONCTIONNALITÉS DE MAVEN  Automatisation du build  Modularisation du projet  Gestion des dépendances  Vérification de la qualité du code source  Développement piloté par les tests  Automatisation des tests d’acceptation  Automatisation du déploiement: Le plugin Maven Deploy est utilisé pour ajouter des artefacts (s) à un repository distant pendant la phase de déploiement de cycle de vie du build. Ce plugin introduit deux objectifs: deploy: deploy: Pour déployer un projet et tous ses artefacts deploy: deploy -file: Pour déployer un seul fichier d’artefact 23
  • 24. III. SUBVERSION Plan:  Présentation  SVN vs CVS 24
  • 25. 1) PRÉSENTATION DE SUBVERSION  La gestion de versions est une activité qui consiste à maintenir l'ensemble des versions ou révisions d’un logiciel ou autre document. On peut ainsi mieux suivre et gérer le contenu, ou en restaurer une version antérieure, notamment si on fait une erreur dans la version la plus récente. Le suivi des versions est particulièrement indiqué lorsque plusieurs personnes collaborent à un projet ou lorsqu'un travail passe par plusieurs étapes de développement et de révision.  Subversion est un logiciel de gestion de sources et de contrôle de versions.Il se veut comme successeur logique de CVS et nous provient du monde de l'open source 25
  • 26. 1) PRÉSENTATION DE SUBVERSION: INSTALLATION DE SUBVERSION L’installation de SVN passe par plusieurs étapes:  télécharger le plus récent svn-x.y.z-  télécharger le plus récent setup.exe,  télécharger le plus récent SVNService.zip  télécharger l'installeur le plus récent de TORTOISEsvn à savoir TortoiseSVN-1.3.0.5416-svn-1.3.0.msi. 26
  • 27. 1) PRÉSENTATION DE SUBVERSION: NOTIONS DE BASE  Repository: Un dépôt (Repository) Subversion est l’emplacement central où sont stockées toutes les données relatives aux projets gérés. Le dépôt est accédé via une URL locale ou distante. Le dépôt contient l’historique des versions des fichiers stockés, les logs enregistrés lors des modifications, les dates et auteurs de ces modifications, etc. Un dépôt apparaît de l’extérieur comme un système de fichiers composé de répertoires au sein desquels on peut naviguer, lire et écrire selon les permissions accordées. 27
  • 28. 1) PRÉSENTATION DE SUBVERSION: LES COMMANDES CLIENT 28
  • 29. 1) PRÉSENTATION DE SUBVERSION: GESTION DES CONFLITS il y a 4 différentes manières de résoudre ce genre de conflits:  Retarder la résolution de conflit  Fusionner les conflits à la main  Copier un fichier dans le fichier actif  Annuler les changements 29
  • 30. 2) SVN VS CVS Subversion présente les mêmes fonctionnalités de CVS, à savoir :  La consultation et la possibilité de restauration des anciennes versions d'un fichier.  Les raisons des modifications apportées et les auteurs de celles-ci.  Les modifications de versions sont stockées sous forme de delta (différence entre deux versions) pour les fichiers. Mais il a également quelques spécificités qui lui sont propres :  Tracer les versions de répertoires, de fichiers et de droits sur les fichiers.  Renommer un fichier ou un répertoire tout en conservant son historique.  Les propagations de version (commit) sont atomiques. Une propagation réussit uniquement si tous les fichiers de la version sont correctement propagés.  Les numéros de versions concernent une propagation et non les fichiers eux- mêmes.  Subversion peut se coupler avec le protocole HTTP Webdav/deltaV.  Les sauvegardes par delta sont aussi possibles sur les fichiers binaires. 30
  • 31. IV. HUDSON Plan:  Présentation de l’intégration continue  Outils de l’intégration continue  Présentation de Hudson 31
  • 32. 1) PRÉSENTATION DE L’INTÉGRATION CONTINUE Pour que l'Intégration Continue puisse se faire correctement, il faut:  Partager les sources du projet via un serveur de gestion de contrôle des sources SCM tel que CVS ou SVN.  L’équipe de développement postent régulièrement les modifications apportées au code.  Disposer de tests unitaires qui seront exécutés par Junit ou TestNG. 32
  • 33. 1) PRÉSENTATION DE L’INTÉGRATION CONTINUE Les intérêts de l’Intégration Continue:  Vérification fréquente du code, et de sa bonne compilation.  Réalisation des tests unitaire et / ou fonctionnels, voire tests d'intégration.  Mise à disposition éventuelle d'une version testable comportant les dernières modifications du code.  Possibilité de créer des rapports périodiques exprimant la qualité du code, la couverture des tests, etc. Si le projet est configuré pour Maven, alors on pourra créer le site du projet qui contiendra l'ensemble de ces 33 rapports.
  • 34. 2) OUTILS DE L’INTÉGRATION CONTINUE  Anthill Pro.  Atlassian Bamboo.  Build Forge.  Cruise Control : l'un des outils d'IC les plus anciens et plutôt populaire.  Apache Continuum : l'outil " officiel " de la communauté Maven.  Hudson  Luntbuild (et Luntbuild pro). 34  JetBrains TeamCity.
  • 35. 3) PRÉSENTATION DE HUDSON: DÉFINITION  Hudson est un outil open source d'intégration continue, fonctionnant dans un conteneur de servlets, ou en mode autonome avec son propre serveur Web embarqué.  Effectuer des builds et des tests: Ant, Maven, MSBuild, …  Check out du code source: Subversion, Mercurial, …  Réaliser des tests unitaires: Junit  Notifier les utilisateurs: E-mail, RSS, …  Gérer la qualité du code: CheckStyle 35
  • 36. 3) PRÉSENTATION DE HUDSON: FONCTIONNALITÉS PRINCIPALES  Indicateurs:  Statut d’un projet  Santé d’un projet  Tendance d’un projet  Maître et esclaves  Matrice de configuration  Gestion des utilisateurs  Sécurité  Rapports de tests  Hudson dispose de la possibilité d'étendre ses capacités grâce à l'ajout de plugins et à la gestions de ceux-ci mais également grâce à la création de 36 nouveaux plugins
  • 37. V. SONAR Plan:  Présentation du contrôle de la qualité  Présentation de Sonar 37
  • 38. 1) PRÉSENTATION DU CONTRÔLE DE QUALITÉ  Sonar offre une solution performante du contrôle de la qualité d‘un logiciel.  Dans le monde informatique en général, et en Java en particulier, la qualité d'une application va être directement liée à la qualité du code  exécution de tests unitaires  analyse de la couverture du code par ces tests  vérifications du respect des règles de codage, etc.  Le contrôle de la qualité va donc pousser l'équipe de développement à adopter et à respecter certains standards de développement.  Le but : rendre le code plus sûr, mais de permettre d'y déceler les erreurs le plus rapidement possible et donc de les corriger ! 38
  • 39. 2) PRÉSENTATION DE SONAR: HISTORIQUE ET FONCTION  Sonar est un outil open source initialement développé par la société suisse Hortis.  Depuis novembre 2008, c'est la société suisse SonarSource qui se charge du développement et du support de Sonar.  Le but principal de cet outil est de fournir une analyse complète de la qualité d'une application en fournissant de nombreuses statistiques (ou métriques) sur ses projets.  Ces données permettent ainsi d'évaluer la qualité du code, et d'en 39 connaître l'évolution au cours du développement.
  • 40. 2) Présentation de Sonar: Architecture un exécuteur (basé le serveur web sur Maven 2/3, Ant qui permet la ou un exécuteur navigation et la Java) dont le but consultation des sera de lancer un analyses certain nombre réalisées sur les d'outils d'analyse, et projets d'en agréger les résultats une base de éventuellement un données, qui plugin pour stocke et Eclipse qui offre historise les une meilleure informations sur intégration des 40 les projets données de Sonar dans son outil de surveillés par développement. Sonar
  • 41. 2) PRÉSENTATION DE SONAR: PRINCIPALES FONCTIONNALITÉS  Tableau de bord complet des différents projets suivis.  Détection rapide du code à risque.  Mesures quantitatives : nombre de classes, duplication de code, etc.  Mesures qualitatives : couverture et taux de réussite des tests, complexité du code, respect des règles de codage...  Historiques des statistiques  Support de plus de 600 règles de qualité.  Gestion de profils pour les règles de codage.  Visualisation du code source, surlignant les violations des règles de codage.  Fonction "Time machine" permettant de comparer plusieurs versions d'une application. 41  Identification des points faibles d'un projet.  Support des plugins.
  • 42. 3) FONCTIONNEMENT DE SONAR: OUTILS EXTERNES  Afin d'analyser un projet Java, Sonar va se baser en partie sur des outils externes, dont : 42
  • 43. 3) FONCTIONNEMENT DE SONAR: VISUALISATION DES DONNÉES  Liste des projets  Vue le nom du projet d’un projet sa version Vue «  Les la tailleDashboard» métriquesprojet du Vue « Components» le taux de du code source:  Visualisation respect des règles Vue "Violations drilldown» quand a été réalisé le dernier build  Vue « Time Machine» les principaux liens (vers l'application, le site du projet, le serveur Vue "Clouds« d'intégration continue, le serveur de gestion des sources, etc.) Vue "Design« les éventuelles alertes sur le projet ; etc. Vue "Hotspots« Vue "Libraries" Vue "Settings« Vue "Project Roles" 43
  • 44. 4) INTÉGRATION DE SONAR <profile> <id>sonar</id>  Si votre projet utilise déjà Maven 2 ou 3, le plus simple est de faire appel au <activation> <activeByDefault>true</activeByDefault> plugin Maven de Sonar. La première chose à faire est de définir quelques </activation> paramètres Maven à placer de préférence dans son fichier settings.xml. <properties>  Nous redéfinissons là lesmysql --> <!-- example pour paramètres de connexion à la base de données, ainsi que l'URL du serveur Sonar. <sonar.jdbc.url>jdbc:derby://localhost:1527/sonar;create=true </sonar.jdbc.url>  Il suffit ensuite de lancer la commande suivante : mvn sonar:sonar <sonar.jdbc.driverClassName>org.apache.derby.jdbc.ClientDriver </sonar.jdbc.driverClassName> Nous venons de voir comment lancer l'analyse Sonar manuellement. Mais il est <sonar.jdbc.username>sonar</sonar.jdbc.username> bien plus profitable de faire réaliser cette tâche automatiquement, grâce à un <sonar.jdbc.password>sonar</sonar.jdbc.password> outil d'intégration continue <!-- server on a remote host --> comme Hudson. <sonar.host.url>http://127.0.0.1:9000/</sonar.host.url> </properties> </profile> 44
  • 45. VII. CONCLUSION  Cet exposé nous a permis de mettre en avant la mise en œuvre de la forge de développement et ce dans le but de garantir la qualité logicielle.  Ces outils présentant l’avantage d’être assez faciles d’utilisation et de configuration, néanmoins plusieurs problèmes surviennent lors de leur mise en pratique et ce à cause de facteurs externes : en l’occurrence l’utilisation des serveurs d’application, l’installation de mysql.. etc 45
  • 46. Merci pour votre attention 46