SlideShare a Scribd company logo
Maven2.apache.org:
    usare un linguaggio formale per
descrivere in modo standard tutte le fasi
      del ciclo di vita del software

                 Simone Federici
                   s.federici@k-tech.it




                                                       Simone Federici
  Eclipse-IT      JavaDay Napoli- 5 ottobre 2007   s.federici@k-tech.it
Evoluzione nella gestione dei progetti




   Ogni riferimento a volti o persone conosciute è puramente casuale.


                                                                Simone Federici
   Eclipse-IT          JavaDay Napoli- 5 ottobre 2007       s.federici@k-tech.it
Cos'è Maven
•    Un modo standard per descrivere progetto
•    un build, test, package, deploy tool
•    un gestore di dipendenze
•    un generatore di report e documentazione
•    e molto altro ancora...



                                                      Simone Federici
    Eclipse-IT   JavaDay Napoli- 5 ottobre 2007   s.federici@k-tech.it
Convention over Configuration

• Un default nella configurazione rende
  tutto più semplice.

• La descrizione del progetto con il suo
  ciclo di vita è sempre possibile fin nei
  minimi dettagli ma non è più
  obbligatoria

                                                   Simone Federici
 Eclipse-IT   JavaDay Napoli- 5 ottobre 2007   s.federici@k-tech.it
Un esempio...
        vale più di 1000 parole!
mvn archetype:create
 -DgroupId=it.jip.confsl
 -DartifactId=esempio




                                                   Simone Federici
Eclipse-IT    JavaDay Napoli- 5 ottobre 2007   s.federici@k-tech.it
Eclipse- Plug-in




        Genera
automaticamente i file
 .project e .classpath
                                                     Simone Federici
 Eclipse-IT     JavaDay Napoli- 5 ottobre 2007   s.federici@k-tech.it
Il POM
              Project Object Model
• Il progetto viene descritto interamente
  tramite un file xml (pom.xml)

• Uno standard che descrive il progetto, il
  ciclo di build e rilascio, il reporting e
  molto altro ancora


                                                       Simone Federici
 Eclipse-IT       JavaDay Napoli- 5 ottobre 2007   s.federici@k-tech.it
<project
                       Semplice POM
             xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-
             instance"
             xsi:schemaLocation="http://maven.apache.org/POM
             /4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
               <modelVersion>4. 0.0 </modelVersion>
               <groupId>it .jip .c onfs l</groupId>
               <artifactId>esem pio </artifactId>
               <packaging>ja r</packaging>
               <version>1.0 -S NAP SHOT </version>
               <name>esempio</name>
               <url>http://maven.apache.org</url>
               <dependencies>
                 <de pen de nc y>
                   <gr ou pId>j un it </g rou pId >
                   <ar tifa ct Id>j un it </a rtifac tId>
                   <ve rs io n> 3. 8.1 </ ve rs io n>
                   <sc op e> test </ sco pe>
                 </d ep end en cy >
               </dependencies>
             </project>
                                                                     Simone Federici
Eclipse-IT            JavaDay Napoli- 5 ottobre 2007             s.federici@k-tech.it
Artefact
• Identificazione precisa di un artefact è
  data dalla terna:
   – groupId + artifactId + version
• Packaging:
   –   POM (Può contenere dei moduli)
   –   JAR
   –   WAR
   –   EAR
                                                      Simone Federici
 Eclipse-IT      JavaDay Napoli- 5 ottobre 2007   s.federici@k-tech.it
Le Dipendenze
• una dipendenza è essa stessa una
  artefact e quindi è identifacata tramite:
   – groupId + artifactId + version
• Scope:
  compile,test,runtime,provided,system

• Repository condiviso (locale e remoto)

                                                     Simone Federici
 Eclipse-IT     JavaDay Napoli- 5 ottobre 2007   s.federici@k-tech.it
I goals e le Phases




                                                      Simone Federici
Eclipse-IT       JavaDay Napoli- 5 ottobre 2007   s.federici@k-tech.it
In pratica
•   mvn compile
•   mvn test -Ddbuser=simone -Ddbpas=****
•   mvn package
•   mvn install
•   mvn deploy -Ddbuser=prod -Ddbpas=secret

i file all'interno delle resources saranno filtrati con le properties passate,
prima di eseguire i test. ${dbuser} e ${dbpas}

                                                                                Simone Federici
    Eclipse-IT               JavaDay Napoli- 5 ottobre 2007                 s.federici@k-tech.it
Plugin:
               Sveliamo il trucco!
Un artifact speciale che definisce uno o
 più goal da “agganciare” alle phases o
 da invocare in modo indipendente.

              Manca quello per il caffè...



                                                         Simone Federici
 Eclipse-IT         JavaDay Napoli- 5 ottobre 2007   s.federici@k-tech.it
In pratica con i profili
•   mvn compile -Pdevelop
•   mvn test -Psystem
•   mvn package -P produzione
•   mvn install -P produzione,nolog
•   mvn deploy -P remoto



                                                        Simone Federici
Eclipse-IT         JavaDay Napoli- 5 ottobre 2007   s.federici@k-tech.it
Plugin HELP
• mvn help:active-profiles
• mvn help:effective-pom




                                                   Simone Federici
 Eclipse-IT   JavaDay Napoli- 5 ottobre 2007   s.federici@k-tech.it
mvn site
Il plugin site, legge il pom e genera un sito
         documentale del progetto.

 Tramite template velocity è possibile
          personalizzare il sito.
     I numerosi plugin di reporting:
metrics, checkstyle, cobertura, findbugs,
          pdm, svn-stat, ecc...
                                                   Simone Federici
 Eclipse-IT   JavaDay Napoli- 5 ottobre 2007   s.federici@k-tech.it
Profili
• Un progetto tanti contesti.

• Test unitari, Test funzionali, Collaudo,
  Produzione...




                                                   Simone Federici
 Eclipse-IT   JavaDay Napoli- 5 ottobre 2007   s.federici@k-tech.it
Plugin per Eclipse
                   grafico!
• Esiste un plugin per eclipse grafico in
  grado di gestire le dipendenze
  automaticamente.
• Per esperienza vissuta, lo sconsiglio
  vivamente.
• La struttura di un progetto Eclipse è
  molto semplice, quella di maven no :-P

                                                      Simone Federici
 Eclipse-IT      JavaDay Napoli- 5 ottobre 2007   s.federici@k-tech.it
Tutto in una pagina

 Centralizzazione, Convenzioni, Plugins,
Profili, Configurazioni, Sito Documentale,
  Ambiente di sviluppo, Deploy remoto,
 Deploy Locale, Continuous Integration,
 Release e Spapshot, System Test, Test
Unitari, Test di integrazione, code style,
SVN/CVS pubblico/sviluppo, Packaging,
   + ANT, +script, e non entra tutto:-)
                                                      Simone Federici
Eclipse-IT       JavaDay Napoli- 5 ottobre 2007   s.federici@k-tech.it
Riferimenti
• http://maven.apache.org

• http://docs.codehaus.org/display/MAVENUSER


• Maven: The Definitive Guide (1.0 Alpha 1)

• http://www.sonatype.com/book/index.html


                                                     Simone Federici
 Eclipse-IT     JavaDay Napoli- 5 ottobre 2007   s.federici@k-tech.it
Ringraziamenti:

              Giorgio Vinci
             Mara Marzocchi



                   K-Tech
                  Eclipse-IT
                                                   Simone Federici
Eclipse-IT    JavaDay Napoli- 5 ottobre 2007   s.federici@k-tech.it

More Related Content

Maven Eclipse

  • 1. Maven2.apache.org: usare un linguaggio formale per descrivere in modo standard tutte le fasi del ciclo di vita del software Simone Federici s.federici@k-tech.it Simone Federici Eclipse-IT JavaDay Napoli- 5 ottobre 2007 s.federici@k-tech.it
  • 2. Evoluzione nella gestione dei progetti Ogni riferimento a volti o persone conosciute è puramente casuale. Simone Federici Eclipse-IT JavaDay Napoli- 5 ottobre 2007 s.federici@k-tech.it
  • 3. Cos'è Maven • Un modo standard per descrivere progetto • un build, test, package, deploy tool • un gestore di dipendenze • un generatore di report e documentazione • e molto altro ancora... Simone Federici Eclipse-IT JavaDay Napoli- 5 ottobre 2007 s.federici@k-tech.it
  • 4. Convention over Configuration • Un default nella configurazione rende tutto più semplice. • La descrizione del progetto con il suo ciclo di vita è sempre possibile fin nei minimi dettagli ma non è più obbligatoria Simone Federici Eclipse-IT JavaDay Napoli- 5 ottobre 2007 s.federici@k-tech.it
  • 5. Un esempio... vale più di 1000 parole! mvn archetype:create -DgroupId=it.jip.confsl -DartifactId=esempio Simone Federici Eclipse-IT JavaDay Napoli- 5 ottobre 2007 s.federici@k-tech.it
  • 6. Eclipse- Plug-in Genera automaticamente i file .project e .classpath Simone Federici Eclipse-IT JavaDay Napoli- 5 ottobre 2007 s.federici@k-tech.it
  • 7. Il POM Project Object Model • Il progetto viene descritto interamente tramite un file xml (pom.xml) • Uno standard che descrive il progetto, il ciclo di build e rilascio, il reporting e molto altro ancora Simone Federici Eclipse-IT JavaDay Napoli- 5 ottobre 2007 s.federici@k-tech.it
  • 8. <project Semplice POM xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema- instance" xsi:schemaLocation="http://maven.apache.org/POM /4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4. 0.0 </modelVersion> <groupId>it .jip .c onfs l</groupId> <artifactId>esem pio </artifactId> <packaging>ja r</packaging> <version>1.0 -S NAP SHOT </version> <name>esempio</name> <url>http://maven.apache.org</url> <dependencies> <de pen de nc y> <gr ou pId>j un it </g rou pId > <ar tifa ct Id>j un it </a rtifac tId> <ve rs io n> 3. 8.1 </ ve rs io n> <sc op e> test </ sco pe> </d ep end en cy > </dependencies> </project> Simone Federici Eclipse-IT JavaDay Napoli- 5 ottobre 2007 s.federici@k-tech.it
  • 9. Artefact • Identificazione precisa di un artefact è data dalla terna: – groupId + artifactId + version • Packaging: – POM (Può contenere dei moduli) – JAR – WAR – EAR Simone Federici Eclipse-IT JavaDay Napoli- 5 ottobre 2007 s.federici@k-tech.it
  • 10. Le Dipendenze • una dipendenza è essa stessa una artefact e quindi è identifacata tramite: – groupId + artifactId + version • Scope: compile,test,runtime,provided,system • Repository condiviso (locale e remoto) Simone Federici Eclipse-IT JavaDay Napoli- 5 ottobre 2007 s.federici@k-tech.it
  • 11. I goals e le Phases Simone Federici Eclipse-IT JavaDay Napoli- 5 ottobre 2007 s.federici@k-tech.it
  • 12. In pratica • mvn compile • mvn test -Ddbuser=simone -Ddbpas=**** • mvn package • mvn install • mvn deploy -Ddbuser=prod -Ddbpas=secret i file all'interno delle resources saranno filtrati con le properties passate, prima di eseguire i test. ${dbuser} e ${dbpas} Simone Federici Eclipse-IT JavaDay Napoli- 5 ottobre 2007 s.federici@k-tech.it
  • 13. Plugin: Sveliamo il trucco! Un artifact speciale che definisce uno o più goal da “agganciare” alle phases o da invocare in modo indipendente. Manca quello per il caffè... Simone Federici Eclipse-IT JavaDay Napoli- 5 ottobre 2007 s.federici@k-tech.it
  • 14. In pratica con i profili • mvn compile -Pdevelop • mvn test -Psystem • mvn package -P produzione • mvn install -P produzione,nolog • mvn deploy -P remoto Simone Federici Eclipse-IT JavaDay Napoli- 5 ottobre 2007 s.federici@k-tech.it
  • 15. Plugin HELP • mvn help:active-profiles • mvn help:effective-pom Simone Federici Eclipse-IT JavaDay Napoli- 5 ottobre 2007 s.federici@k-tech.it
  • 16. mvn site Il plugin site, legge il pom e genera un sito documentale del progetto. Tramite template velocity è possibile personalizzare il sito. I numerosi plugin di reporting: metrics, checkstyle, cobertura, findbugs, pdm, svn-stat, ecc... Simone Federici Eclipse-IT JavaDay Napoli- 5 ottobre 2007 s.federici@k-tech.it
  • 17. Profili • Un progetto tanti contesti. • Test unitari, Test funzionali, Collaudo, Produzione... Simone Federici Eclipse-IT JavaDay Napoli- 5 ottobre 2007 s.federici@k-tech.it
  • 18. Plugin per Eclipse grafico! • Esiste un plugin per eclipse grafico in grado di gestire le dipendenze automaticamente. • Per esperienza vissuta, lo sconsiglio vivamente. • La struttura di un progetto Eclipse è molto semplice, quella di maven no :-P Simone Federici Eclipse-IT JavaDay Napoli- 5 ottobre 2007 s.federici@k-tech.it
  • 19. Tutto in una pagina Centralizzazione, Convenzioni, Plugins, Profili, Configurazioni, Sito Documentale, Ambiente di sviluppo, Deploy remoto, Deploy Locale, Continuous Integration, Release e Spapshot, System Test, Test Unitari, Test di integrazione, code style, SVN/CVS pubblico/sviluppo, Packaging, + ANT, +script, e non entra tutto:-) Simone Federici Eclipse-IT JavaDay Napoli- 5 ottobre 2007 s.federici@k-tech.it
  • 20. Riferimenti • http://maven.apache.org • http://docs.codehaus.org/display/MAVENUSER • Maven: The Definitive Guide (1.0 Alpha 1) • http://www.sonatype.com/book/index.html Simone Federici Eclipse-IT JavaDay Napoli- 5 ottobre 2007 s.federici@k-tech.it
  • 21. Ringraziamenti: Giorgio Vinci Mara Marzocchi K-Tech Eclipse-IT Simone Federici Eclipse-IT JavaDay Napoli- 5 ottobre 2007 s.federici@k-tech.it