SlideShare une entreprise Scribd logo
Maven2

Nicolas De loof
Qui suis-je ?


Nicolas De loof
Software Architect , 10 ans de
Committer Maven depuis fin 2007
plugins JavaScript et GWT
Apache Commons-monitoring
Fondateur du

http://blog.loof.fr
Prologue
Constat


Y’a toujours des
problèmes
  Erreur dans la configuration
  Oubli d’une dépendance
  Oubli d’un fichier
  Correction de dernière minute qui introduit
  une régression…
  Pourtant ça marche sur mon poste !
  Elle est où la doc ?
  etc
Prologue

Génération des binaires
                              Génération de code

Distribution
                                    Documentation

                   ?
  Qualimétrie                  Gestion de version

          Configuration IDE
Prologue

Apache Ant



  Mutualisation d’un projet à l’autre…
     copier/coller
     Properties, properties, et encore properties
  Réutilisation …
     Fusion de scripts d’origines différentes
Prologue


Maven 1 = scripts Ant mutualisés (« plugins »)
outillés par des tags Jelly
  Dérive progressive comme langage de Script
  Invocations inter-plugins … cycles
  Mutualisation ?
Prologue


Prendre les bonnes idées de Maven 1

… sans les faiblesses
Soiree Maven 2
Maven2 … c’est quoi ?


  Quelques règles de structure
  Un moteur d’exécution de plugins
… et rien d’autre !

Et surtout pas un N-ième langage de script !
Conventions…

Maven établit des conventions « raisonnables »
sur la structure du projet :



  Sources dans src
  Livrables dans src/main
  Tests dans src/test
  Tout ce qui est construit dans target
  Code généré dans target/generated-sources
  …
… over configuration

   Conventions = moins de configuration pour chaque
   plugin

   Plus d’homogénéité entre projets

   Un projet « basique » peut être
      compilé,
      testé,
      packagé,
      diffusé
par maven sans configuration spécifique.
exemple
<?xml version=quot;1.0quot; encoding=quot;UTF-8quot; ?>
<project>

<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany</groupId>
<artifactId>foo</artifactId>
<version>1.0.0</version>

<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
</dependencies>

<build>
</build>

</project>
Plugin

Ecrit en Java
Projet « maven » à part entière
Peut exploiter toute librairie java jugée utile
Configuré par Injection de dépendances
Exécution 100% « étanche » : indépendant du
projet et des autres plugins
Cycle de vie

            phase               plugin
            s                   s
           Validate
  generate-sources
                            resource:resource
generate-resources
 process-resources
                            compiler:compile
            compile
   process-classes
                            surefire:test
       test-compile
                test
           package          jar:jar
    integration-test
                            install:install
              verify
             install
             deploy         deploy:deploy
Cycle de vie

            phase               plugin
            s                   s
           Validate
                            cxf:wsdl2java
  generate-sources
                            resource:resource
generate-resources
 process-resources
                            compiler:compile
            compile
   process-classes
                            surefire:test
       test-compile
                test
           package          jar:jar
    integration-test
                            install:install
              verify
             install
             deploy         deploy:deploy
Cycle de vie

            phase                    plugin
            s                        s
           Validate
                                 cxf:wsdl2java
  generate-sources
                                 resource:resource
generate-resources
 process-resources
                                 compiler:compile
            compile
   process-classes     team@breizhjug.org
                                 surefire:test
       test-compile
                test
           package               jar:jar
    integration-test
                                 install:install
              verify
             install
             deploy              deploy:deploy
Modèle du projet

            phase                    plugin
                                                          MavenProjec
            s                        s
           Validate                                       t
                                 cxf:wsdl2java
  generate-sources                                   addSourceRoot
                                 resource:resource
generate-resources
 process-resources
                                 compiler:compile
            compile
                                                     getSourceRoots
   process-classes     team@breizhjug.org
                                 surefire:test
       test-compile
                test
           package               jar:jar
    integration-test
                                 install:install
              verify
             install
             deploy              deploy:deploy
toujours plus

Il est aisé d’ajouter un plugin

Outillage de test
Contrôle qualité
Génération de code
Packaging spécifique
…

SANS impact sur l’existant
Plugins : qui ? où ?


Plugins « officiels » : http://maven.apache.
org/plugins/
Plugins « communautaires » : http://mojo.
codehaus.org/
Plugins spécifiques
cxf, jaxws, cargo, …
Besoin spécifique ?

L’écriture d’un plugin est facile
(plus que celle d’une tâche ANT)
   En Java, Groovy, BeanShell …
Projet Java/Maven à part entière
   toutes les librairies sont accessibles
   le plugin peut être outillé de tests
   Mécanisme de documentation intégré
   La diffusion/mutualisation du plugin est facilitée
Dépendances

  Maven gère les dépendances nécessaire au
  projet
sans Maven avec Maven
Transitivité


Mon projet dépend d’Hibernate
Hibernate dépend d’ EHcache

Donc Mon projet dépend d’ EHcache
Transitivité

Vous sauriez gérer ça à la main ?
Effet de bord

Maven encourage les librairies
ciblées plutôt que le gros
JAR qui fait tout

Plus de librairies
Gestion fine des dépendances
Repository

= Dépôt de librairies
   Dépôt local ($HOME/.m2/repository)
     Évite la multiplication des .jar sur le poste de dev.
  Dépôt(s) public(s) (http://repo1.maven.
  org/maven2)
     Mise à disposition rapide des librairies libres
  Dépôt privé
     Gestion fine des librairies, libres ou non
Repository
Scopes

Compile
  Utilisé pour compiler src/main/java
Runtime
  Nécessaire à l’exécution mais non référencé
       (ex : driver JDBC)
Test
  Utilisé pour compiler et exécuter les tests
Provided
  Utilisé par compiler mais doit être fournit par l’
  environnement (• JEE)
Transitivité


Mon projet dépend d’Hibernate
Hibernate dépend d’ EHcache

Donc Mon projet dépend d’ EHcache
SNAPSHOTS
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
        <version>2.5.2-20080520.120258-
<version>1.0-SNAPSHOT</version>
        2</version>
<executions>
<execution>
<goals>
<goal>eclipse</goal>
<goal>compile</goal>
<goal>generateAsync</goal>
</goals>
</execution>
</executions>
<configuration>
…
</configuration>
</plugin>
Deploiement

<distributionManagement>
<repository>
<id>sourceforge</id>
<name>sync to central</name>
<url>scp://shell.sourceforge.net/…</url>
</repository>

<snapshotRepository>
<id>sourceforge</id>
<name>snapshot repository</name>
<uniqueVersion>false</uniqueVersion>
<url>scp://shell.sourceforge.net/…</url>
</snapshotRepository>
</distributionManagement>
Repository d’entreprise
Héritage


Mettre en commun la configuration Maven
   Configuration des plugins
   Dépendances communes
   Infrastructure commune


Fixer les versions
   Versions des plugins <versionManagement>
   Versions des dépendances <dependencyManagement>
Modules

« Diviser pour régner »
  Décomposer le projet en modules
    Par domaine fonctionnel
    Par technologie
    Gestion précise des dépendances
    Respect des règles d’architecture
  Un projet POM pour enchaîner les
  modules
Modules + héritage

« Héritage naturel »
  POM racine
    Configuration globale du projet
  Modules
    Héritent du POM racine
Héritage global

« Corporate POM »

 Configuration globale « entreprise »
   Outils Q&A
   Configuration par défaut des plugins
   Infrastructure
   Versions de référence (scope « import »)
Profils

Spécialiser le build
   Profil « fast »
   Profil « dev »
   Profil « ci »
   Profil « release »

Activation
   À la demande -Pxxx
   Sur critère (OS, fichier, propriété « -D », …)
Q.A.

Site et raports
   Documentation (projet, javadoc, XRef)
   Résultat de l’exécution des tests
   Couverture de tests : clover, cobertura, emma
   Qualité du code : findbugs
   Conformité aux standards : checkstyle
   Patterns / Antipatterns : pmd
   …
Intégration continue

Une seule commande [ + un profil ]
Soiree Maven 2
POM.xml


    Formalisme XML incroyablement verbeux
.. et désormais intouchable pour rester compatible
POM.xml

<dependency
<dependency>
groupId=quot;org.codehaus.plexusquot;
<groupId>org.codehaus.plexus</groupId>
artifactId=quot;plexus-archiverquot;
<artifactId>plexus-archiver</artifactId>
version=quot;1.0-alpha-9quot;>
<version>1.0-alpha-9</version>
<exclusion>
<exclusions>
org.codehaus.plexus:plexus-container-default
<exclusion>
</exclusion>
<groupId>org.codehaus.plexus</groupId>
<exclusion>
<artifactId>plexus-container-default</artifactId>
org.codehaus.plexus:plexus-component-api
</exclusion>
</exclusion>
<exclusion>
</dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-component-api</artifactId>
</exclusion>
</exclusions>
</dependency>
POM.xml

<plugin
<plugin>groupId=quot;org.codehaus.mojoquot; artifactId=quot;xml-maven-pluginquot; version=quot;
1.0-beta-2quot;>
<groupId>org.codehaus.mojo</groupId>
<execution phase=quot;generate-sourcesquot; goal=quot;transformquot; />
<artifactId>xml-maven-plugin</artifactId>
<configuration>
<version>1.0-beta-2</version>
<transformationSet dir=quot;src/main/wsdlquot;>
<executions>
<include>adg.wsdl</include>
<execution>
</transformationSet>
<goals>
...
<goal>transform</goal>
</goals>
<phase>generate-sources</phase>
</execution>
</executions>
<configuration>
<transformationSets>
<transformationSet>
<dir>src/main/wsdl</dir>
<includes>
<include>adg.wsdl</include>
</includes>
...
Support des IDE ?


  Netbeans :
  IntelliJ IDEA :
  Eclipse : … en progrès

Sondage : quel IDE utilisez vous ?
Release often ?

    Peu de développeurs
+
    Politique frileuse Apache
+
    Mécanisme de SNAPSHOTS
=
    Les releases de plugin sont rares
Plugins absents

De nombreux outils n’ont toujours pas de plugin
maven2

La faute du plugin AntRun ?
La faute de l’API Maven ?
Plugins redondants

Ex :
   plugins XML et XSLT chez « Mojo »
   Plugin GWT
       « draft » initial sous Mojo
       code.google.com/p/gwt-maven
       3 propositions +ou- abouties dans le JIRA Mojo
       = fusion (ouf)


Statut d’un plugin ?
Réactivité ?
Moteur de recherche ?
Transitivité

De nombreux projets déclarent des
dépendances superflues / incorrectes

Règle : un POM.xml publié n’est jamais modifié

Les choses s’améliorent…
Utiliser un dépôt privé !
JAR javax.* absents

Pour raison de licence !

Mais qui s’en soucie à part la fondation Apache
?
Pourquoi pas un
« accept licence ? [Y/N] » ?



Dépôt sur java.net pour les APIs récentes
Version Java cible


XYZ.jar est-il compatible java 1.4 ?
Le plugin YY nécessite Java5
Maven nécessite Java 1.4
Mon projet cible Java 1.3
Doublons

commons-beanutils + commons-beanutils-core
commons-logging + commons-logging-api
commons-io + org.apache.commons:-io
…
Exclusion globale


Je ne VEUX PAS utiliser commons-logging !




Astuce « common-logging:99.0 »
Tests d’intégration


src/it/java ?
Phase « Integration-test » ?
Projet dédié ?
Interrogations


OSGi
Java Modules (JSR 277)
POM.xml
  … quelle place pour maven ?
Interrogations


Plus généralement, quelle est la roadmap ?
  Maven 2.2, 2.3
  Maven 3 ???
Soiree Maven 2
Conflits d’intérêts
Conséquences


Repository d’entreprise : Archiva vs Nexus



Intégration sous Eclipse : q4e (iam) vs
m2eclispe

…
Techno-obscur

  Injection de dépendances : Plexus
  Séparation des classloaders : ClassWorlds
  Mapping Java / XML : Modello

• Trois projets clés, hors fondation apache

Sondage : qui connaît au moins un de ces outils ?
Community-driven ?

Théoriquement, le développement est
« piloté par la communauté »
Et dans les faits ?
 Re: [M2] Are pom.xml settings.xml really well-formed?
 by Jason van Zyl – Feb 09, 2008; 06:09pm

 We don't use Xerces, never have, never will.

 Re: [M2] Maven core : Plexus vs Spring / OSGi ?
 by Jason van Zyl – May 02, 2008; 05:53&m

 As far as Spring, that's honestly never going to happen while I'm
 here because I will always argue that something like XBR/Guice
 which is a DI library is more appropriate and there is nothing Spring
 can do that XBR cannot do today in terms of dependency injection.
Un gars, une vision

Rod Jonhson • Spring



Marc Fleury • JBoss



Jason Van Zyl • Maven 3
Soiree Maven 2
épilogue
« Killer » plugin :
                      Release

Génération du livrable du projet ?

Option 1 :
MaProcédureDe50PagesJamaisAJour.doc
Option 2 :
mvn release:prepare
mvn release:perform
Soiree Maven 2
« Killer » plugin :
                      Archetype

  Démarrer un projet « propre » en 2 minutes ?

  En se basant sur un projet de référence !

mvn archetype:create-from-project
mvn archetype:generate
Soiree Maven 2
Bonnes pratiques
Mauvaises pratiques

 1.   Ne pas utiliser les conventions
 2.   Mettre tout ce qui est possible de mettre dans le pom
 3.   Se rendre dépendant de l’environnement
 4.   Multiplier les niveaux d’héritage
 5.   Utiliser systématiquement quot;-Dmaven.test.skip=true »
 6.   Faire les releases à la main
 7.   S’échanger les jars par mail
 8.   Utilisation massive du plugin antrun
 9.   Confondre dependencies et dependencyManagement
10.   Rester le nez dans la console
Bonnes pratiques

Adapter le projet à Maven, pas l’inverse
Utiliser des modules ciblés et simple
Penser « plugin »
Participer à la communauté des utilisateurs
Rapporter ses problèmes en utilisant un cas de
test simple
Bonnes pratiques

Verrouiller les versions des plugins
Indiquer les dépendances directes
Lire la doc ;-) [2 « open-books »]
Utiliser un gestionnaire de dépôt (archiva/nexus)
Rester indépendant de l’environnement … éviter
les settings.xml exotiques
Attention au quot;-Dmaven.test.skip=truequot;
Bonnes pratiques


« Les meilleures pratiques sont celles qui
correspondent à vos besoins »
Docs utiles
Question / réponses

Contenu connexe

Tendances

Quand java prend de la vitesse, apache maven vous garde sur les rails
Quand java prend de la vitesse, apache maven vous garde sur les railsQuand java prend de la vitesse, apache maven vous garde sur les rails
Quand java prend de la vitesse, apache maven vous garde sur les rails
Arnaud Héritier
 
Présentation Maven
Présentation MavenPrésentation Maven
Présentation Maven
SOAT
 
Présentation1
Présentation1Présentation1
Présentation1
Boulkenafet samir
 
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
 
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
Sébastien Le Marchand
 
Présentation Gradle au LyonJUG par Grégory Boissinot - Zenika
Présentation Gradle au LyonJUG par Grégory Boissinot - ZenikaPrésentation Gradle au LyonJUG par Grégory Boissinot - Zenika
Présentation Gradle au LyonJUG par Grégory Boissinot - Zenika
Zenika
 
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
 
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
 
GWT Principes & Techniques
GWT Principes & TechniquesGWT Principes & Techniques
GWT Principes & Techniques
Rachid NID SAID
 
NightClazz Build Tools & Continuous Delivery
NightClazz Build Tools & Continuous DeliveryNightClazz Build Tools & Continuous Delivery
NightClazz Build Tools & Continuous Delivery
Zenika
 
REX Openshift à la Poste
REX Openshift à la PosteREX Openshift à la Poste
REX Openshift à la Poste
Membré Guillaume
 
Une (simple) présentation de Apache Maven 2
Une (simple) présentation de Apache Maven 2Une (simple) présentation de Apache Maven 2
Une (simple) présentation de Apache Maven 2
teejug
 
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
 

Tendances (20)

Quand java prend de la vitesse, apache maven vous garde sur les rails
Quand java prend de la vitesse, apache maven vous garde sur les railsQuand java prend de la vitesse, apache maven vous garde sur les rails
Quand java prend de la vitesse, apache maven vous garde sur les rails
 
Présentation Maven
Présentation MavenPrésentation Maven
Présentation Maven
 
gradle_nantesjug
gradle_nantesjuggradle_nantesjug
gradle_nantesjug
 
Présentation1
Présentation1Présentation1
Présentation1
 
Gradle_BordeauxJUG
Gradle_BordeauxJUGGradle_BordeauxJUG
Gradle_BordeauxJUG
 
Gradle_ToulouseJUG
Gradle_ToulouseJUGGradle_ToulouseJUG
Gradle_ToulouseJUG
 
Gradle_ToursJUG
Gradle_ToursJUGGradle_ToursJUG
Gradle_ToursJUG
 
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)
 
gradle_lavajug
gradle_lavajuggradle_lavajug
gradle_lavajug
 
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
 
Gradle_BreizJUG
Gradle_BreizJUGGradle_BreizJUG
Gradle_BreizJUG
 
Présentation Gradle au LyonJUG par Grégory Boissinot - Zenika
Présentation Gradle au LyonJUG par Grégory Boissinot - ZenikaPrésentation Gradle au LyonJUG par Grégory Boissinot - Zenika
Présentation Gradle au LyonJUG par Grégory Boissinot - Zenika
 
NightClazz Build Tools & Continuous Delivery Avancé
NightClazz Build Tools & Continuous Delivery AvancéNightClazz Build Tools & Continuous Delivery Avancé
NightClazz Build Tools & Continuous Delivery Avancé
 
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)
 
GWT Principes & Techniques
GWT Principes & TechniquesGWT Principes & Techniques
GWT Principes & Techniques
 
NightClazz Build Tools & Continuous Delivery
NightClazz Build Tools & Continuous DeliveryNightClazz Build Tools & Continuous Delivery
NightClazz Build Tools & Continuous Delivery
 
REX Openshift à la Poste
REX Openshift à la PosteREX Openshift à la Poste
REX Openshift à la Poste
 
Une (simple) présentation de Apache Maven 2
Une (simple) présentation de Apache Maven 2Une (simple) présentation de Apache Maven 2
Une (simple) présentation de Apache Maven 2
 
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
 
Gradle_Paris2010
Gradle_Paris2010Gradle_Paris2010
Gradle_Paris2010
 

En vedette

De votre idée géniale à votre Minimum Viable Product - Café Techno Niort ...
De votre idée géniale à votre Minimum Viable Product - Café Techno Niort ...De votre idée géniale à votre Minimum Viable Product - Café Techno Niort ...
De votre idée géniale à votre Minimum Viable Product - Café Techno Niort ...
Sébastien Prunier
 
De votre idée géniale à votre Minimum Viable Product - Rencontres National...
De votre idée géniale à votre Minimum Viable Product - Rencontres National...De votre idée géniale à votre Minimum Viable Product - Rencontres National...
De votre idée géniale à votre Minimum Viable Product - Rencontres National...
Sébastien Prunier
 
Mobile product - "Build great apps!" at ProductTank Paris #17
Mobile product - "Build great apps!" at ProductTank Paris #17Mobile product - "Build great apps!" at ProductTank Paris #17
Mobile product - "Build great apps!" at ProductTank Paris #17
Alexandre Jubien
 
What is a startup?
What is a startup?What is a startup?
What is a startup?
Alexandre Jubien
 
Growth Hacking des Apps - #Appdays2016
Growth Hacking des Apps - #Appdays2016Growth Hacking des Apps - #Appdays2016
Growth Hacking des Apps - #Appdays2016
Alexandre Jubien
 
App indexing at #SMXParis 2015
App indexing at #SMXParis 2015App indexing at #SMXParis 2015
App indexing at #SMXParis 2015
Alexandre Jubien
 
Comment opérer votre transformation mobile ? - aux AppDays
Comment opérer votre transformation mobile ? - aux AppDaysComment opérer votre transformation mobile ? - aux AppDays
Comment opérer votre transformation mobile ? - aux AppDays
Alexandre Jubien
 
Une transformation tout (ou presque) sauf digitale
Une transformation tout (ou presque) sauf digitaleUne transformation tout (ou presque) sauf digitale
Une transformation tout (ou presque) sauf digitale
Chris Woodrow
 
Involvement of software companies in oss - serli-jerome petit - f os-sa2011
Involvement of software companies in oss - serli-jerome petit - f os-sa2011Involvement of software companies in oss - serli-jerome petit - f os-sa2011
Involvement of software companies in oss - serli-jerome petit - f os-sa2011
fOSSa - Free Open Source Software Academia Conference
 
Growth Hacking at SPN
Growth Hacking at SPNGrowth Hacking at SPN
Growth Hacking at SPN
Alexandre Jubien
 

En vedette (11)

De votre idée géniale à votre Minimum Viable Product - Café Techno Niort ...
De votre idée géniale à votre Minimum Viable Product - Café Techno Niort ...De votre idée géniale à votre Minimum Viable Product - Café Techno Niort ...
De votre idée géniale à votre Minimum Viable Product - Café Techno Niort ...
 
Premiere
PremierePremiere
Premiere
 
De votre idée géniale à votre Minimum Viable Product - Rencontres National...
De votre idée géniale à votre Minimum Viable Product - Rencontres National...De votre idée géniale à votre Minimum Viable Product - Rencontres National...
De votre idée géniale à votre Minimum Viable Product - Rencontres National...
 
Mobile product - "Build great apps!" at ProductTank Paris #17
Mobile product - "Build great apps!" at ProductTank Paris #17Mobile product - "Build great apps!" at ProductTank Paris #17
Mobile product - "Build great apps!" at ProductTank Paris #17
 
What is a startup?
What is a startup?What is a startup?
What is a startup?
 
Growth Hacking des Apps - #Appdays2016
Growth Hacking des Apps - #Appdays2016Growth Hacking des Apps - #Appdays2016
Growth Hacking des Apps - #Appdays2016
 
App indexing at #SMXParis 2015
App indexing at #SMXParis 2015App indexing at #SMXParis 2015
App indexing at #SMXParis 2015
 
Comment opérer votre transformation mobile ? - aux AppDays
Comment opérer votre transformation mobile ? - aux AppDaysComment opérer votre transformation mobile ? - aux AppDays
Comment opérer votre transformation mobile ? - aux AppDays
 
Une transformation tout (ou presque) sauf digitale
Une transformation tout (ou presque) sauf digitaleUne transformation tout (ou presque) sauf digitale
Une transformation tout (ou presque) sauf digitale
 
Involvement of software companies in oss - serli-jerome petit - f os-sa2011
Involvement of software companies in oss - serli-jerome petit - f os-sa2011Involvement of software companies in oss - serli-jerome petit - f os-sa2011
Involvement of software companies in oss - serli-jerome petit - f os-sa2011
 
Growth Hacking at SPN
Growth Hacking at SPNGrowth Hacking at SPN
Growth Hacking at SPN
 

Similaire à Soiree Maven 2

Maven et industrialisation du logiciel
Maven et industrialisation du logicielMaven et industrialisation du logiciel
Maven et industrialisation du logiciel
ENSET, Université Hassan II Casablanca
 
JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924
Gregory Boissinot
 
Maven
MavenMaven
SLIDES-625.1.1-IDL-4-build tools maven.pdf
SLIDES-625.1.1-IDL-4-build tools maven.pdfSLIDES-625.1.1-IDL-4-build tools maven.pdf
SLIDES-625.1.1-IDL-4-build tools maven.pdf
ArouNa3
 
Gitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement ContinueGitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement Continue
Vincent Composieux
 
Migrer de Jenkins vers Azure DevOps les Builds Java
Migrer de Jenkins vers Azure DevOps les Builds JavaMigrer de Jenkins vers Azure DevOps les Builds Java
Migrer de Jenkins vers Azure DevOps les Builds Java
Cédric Leblond
 
Cedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsCedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure Devops
AZUG FR
 
Cedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsCedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure Devops
FactoVia
 
20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natif20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natif
Henri Gomez
 
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
Christophe Rochefolle
 
Deploiement continu breizh camp
Deploiement continu breizh campDeploiement continu breizh camp
Deploiement continu breizh camp
Claude Falguiere
 
Maven
MavenMaven
JavaScript dans l'usine logicielle
JavaScript dans l'usine logicielleJavaScript dans l'usine logicielle
JavaScript dans l'usine logicielle
jollivetc
 
20091020 - Normandy Jug - Builders Battle
20091020 - Normandy Jug - Builders Battle20091020 - Normandy Jug - Builders Battle
20091020 - Normandy Jug - Builders Battle
Arnaud Héritier
 
Ê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
Julien Dubois
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache Maven
Arnaud Héritier
 
20111220 lyon jug-packaging-natif
20111220 lyon jug-packaging-natif20111220 lyon jug-packaging-natif
20111220 lyon jug-packaging-natif
Henri Gomez
 
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
hibnico
 
Jenkins Workflow
Jenkins WorkflowJenkins Workflow
Jenkins Workflow
Jean Detoeuf
 
Ez18n Annotation Processing Tool in a nutshell
Ez18n Annotation Processing Tool in a nutshellEz18n Annotation Processing Tool in a nutshell
Ez18n Annotation Processing Tool in a nutshell
gdigugli
 

Similaire à Soiree Maven 2 (20)

Maven et industrialisation du logiciel
Maven et industrialisation du logicielMaven et industrialisation du logiciel
Maven et industrialisation du logiciel
 
JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924
 
Maven
MavenMaven
Maven
 
SLIDES-625.1.1-IDL-4-build tools maven.pdf
SLIDES-625.1.1-IDL-4-build tools maven.pdfSLIDES-625.1.1-IDL-4-build tools maven.pdf
SLIDES-625.1.1-IDL-4-build tools maven.pdf
 
Gitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement ContinueGitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement Continue
 
Migrer de Jenkins vers Azure DevOps les Builds Java
Migrer de Jenkins vers Azure DevOps les Builds JavaMigrer de Jenkins vers Azure DevOps les Builds Java
Migrer de Jenkins vers Azure DevOps les Builds Java
 
Cedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsCedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure Devops
 
Cedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsCedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure Devops
 
20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natif20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natif
 
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
 
Deploiement continu breizh camp
Deploiement continu breizh campDeploiement continu breizh camp
Deploiement continu breizh camp
 
Maven
MavenMaven
Maven
 
JavaScript dans l'usine logicielle
JavaScript dans l'usine logicielleJavaScript dans l'usine logicielle
JavaScript dans l'usine logicielle
 
20091020 - Normandy Jug - Builders Battle
20091020 - Normandy Jug - Builders Battle20091020 - Normandy Jug - Builders Battle
20091020 - Normandy Jug - Builders Battle
 
Ê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
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache Maven
 
20111220 lyon jug-packaging-natif
20111220 lyon jug-packaging-natif20111220 lyon jug-packaging-natif
20111220 lyon jug-packaging-natif
 
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
 
Jenkins Workflow
Jenkins WorkflowJenkins Workflow
Jenkins Workflow
 
Ez18n Annotation Processing Tool in a nutshell
Ez18n Annotation Processing Tool in a nutshellEz18n Annotation Processing Tool in a nutshell
Ez18n Annotation Processing Tool in a nutshell
 

Dernier

Meetup LFUG : Cahier de vacances Liferay
Meetup LFUG : Cahier de vacances LiferayMeetup LFUG : Cahier de vacances Liferay
Meetup LFUG : Cahier de vacances Liferay
Sébastien Le Marchand
 
Cours d'Intelligence Artificielle et Apprentissage Automatique.pptx
Cours d'Intelligence Artificielle et Apprentissage Automatique.pptxCours d'Intelligence Artificielle et Apprentissage Automatique.pptx
Cours d'Intelligence Artificielle et Apprentissage Automatique.pptx
Jacques KIZA DIMANDJA
 
Transformation Digitale - Initiez-vous à l'informatique et à l'utilisation de...
Transformation Digitale - Initiez-vous à l'informatique et à l'utilisation de...Transformation Digitale - Initiez-vous à l'informatique et à l'utilisation de...
Transformation Digitale - Initiez-vous à l'informatique et à l'utilisation de...
Maalik Jallo
 
procede de fabrication mecanique et industriel
procede de fabrication mecanique et industrielprocede de fabrication mecanique et industriel
procede de fabrication mecanique et industriel
saadbellaari
 
Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...
Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...
Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...
InnovaSter-Trade Ltd.
 
Lae-ac1-5_english-fraançais_qins italy.pdf
Lae-ac1-5_english-fraançais_qins italy.pdfLae-ac1-5_english-fraançais_qins italy.pdf
Lae-ac1-5_english-fraançais_qins italy.pdf
djelloulbra
 
Introduction à Crossplane (Talk Devoxx 2023)
Introduction à Crossplane (Talk Devoxx 2023)Introduction à Crossplane (Talk Devoxx 2023)
Introduction à Crossplane (Talk Devoxx 2023)
Adrien Blind
 

Dernier (7)

Meetup LFUG : Cahier de vacances Liferay
Meetup LFUG : Cahier de vacances LiferayMeetup LFUG : Cahier de vacances Liferay
Meetup LFUG : Cahier de vacances Liferay
 
Cours d'Intelligence Artificielle et Apprentissage Automatique.pptx
Cours d'Intelligence Artificielle et Apprentissage Automatique.pptxCours d'Intelligence Artificielle et Apprentissage Automatique.pptx
Cours d'Intelligence Artificielle et Apprentissage Automatique.pptx
 
Transformation Digitale - Initiez-vous à l'informatique et à l'utilisation de...
Transformation Digitale - Initiez-vous à l'informatique et à l'utilisation de...Transformation Digitale - Initiez-vous à l'informatique et à l'utilisation de...
Transformation Digitale - Initiez-vous à l'informatique et à l'utilisation de...
 
procede de fabrication mecanique et industriel
procede de fabrication mecanique et industrielprocede de fabrication mecanique et industriel
procede de fabrication mecanique et industriel
 
Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...
Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...
Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...
 
Lae-ac1-5_english-fraançais_qins italy.pdf
Lae-ac1-5_english-fraançais_qins italy.pdfLae-ac1-5_english-fraançais_qins italy.pdf
Lae-ac1-5_english-fraançais_qins italy.pdf
 
Introduction à Crossplane (Talk Devoxx 2023)
Introduction à Crossplane (Talk Devoxx 2023)Introduction à Crossplane (Talk Devoxx 2023)
Introduction à Crossplane (Talk Devoxx 2023)
 

Soiree Maven 2