SlideShare a Scribd company logo
Maven: CoC Maven C onvention  O ver  C onfiguration V alerio  S chiavoni [email_address] Università Degli Studi Roma3 Javaday Roma - 02/12/2006
agenda cosa è maven key concepts cool features esempi di utilizzo Valerio Schiavoni  [email_address]  UniRoma3
cosa è maven un  semplice  build tool ?  build, test, package, document, deploy si ma più in generale: l'applicazione di  patterns   comuni all'infrastruttura di  build di un progetto Valerio Schiavoni  [email_address]  UniRoma3
do you know  your sources ? familiarità con un progetto difficile per il nuovo sviluppatore spesso è un inferno script  make o ant  custom  tanti modi di fare la stessa cosa senza convenzioni... Valerio Schiavoni  [email_address]  UniRoma3
come si usa maven installazione: scompattare un file zip configurazione: export MAVEN_HOME e poi:  da linea di comando:  mvn ... usando plugin per il vostro IDE (eclipse, netbeans, idea) Valerio Schiavoni  [email_address]  UniRoma3
key point: POM POM Developers Dependencies Plugins Organization Reporting Issue  Management Continuous Integration Source Control Management Mailing Lists Valerio Schiavoni  [email_address]  UniRoma3
cool features gestione dichiarativa delle dipendenze automazione delle attività più tipiche di ogni progetto  supporto nativo con sistemi di integrazione continua (CI) Valerio Schiavoni  [email_address]  UniRoma3
Dipendenze   <dependency>   <groupId>junit</groupId>   <artifactId> junit </artifactId>   <version>4.0</version>   <scope>test</scope>   </dependency> Valerio Schiavoni  [email_address]  UniRoma3
gestione delle dipendenze un semplice grafo delle dipendenze dipendenze dirette my app commons-a commons-b commons-c commons-d commons-e Maven (2) gestisce  automaticamente le dipendenze  transitive dipendenze transitive Valerio Schiavoni  [email_address]  UniRoma3
dove vengono risolte ? repository locale  repository remoto www.ibiblio.org/maven2 vari mirror www.mvnrepository.com http://maven.apache.org/archiva/ Valerio Schiavoni  [email_address]  UniRoma3
repositories dependency resolution local repository remote repository locale al  vostro pc da qualche parte sul web Valerio Schiavoni  [email_address]  UniRoma3
e con librerie  private  ? non tutto è open-source... è possibile installare localmente le librerie nel proprio repository locale vediamo come o referenziare direttamente la libreria di interesse sul file-system sconsigliato Valerio Schiavoni  [email_address]  UniRoma3
mvn install per installare la propria libreria: mvn  -Dfile=myLib.jar -DgroupId=foo  -DartifactId=bar -Dversion=1.0 -Dpackaging=jar -DgeneratePom=true install Valerio Schiavoni  [email_address]  UniRoma3
cool features gestione dichiarativa delle dipendenze automazione delle attività tipiche di ogni progetto software supporto nativo con sistemi di integrazione continua (CI) Valerio Schiavoni  [email_address]  UniRoma3 Valerio Schiavoni  [email_address]  UniRoma3
attività tipiche : ovvero.. come compilate il vostro progetto ? e come eseguite i  test ? test di unità e di integrazione insieme ?  e come lo “ impacchettate ” ? war, jar, ear, zip, ... e i rilasci ? e il deploy? ? Valerio Schiavoni  [email_address]  UniRoma3
...ecco come! mvn compile mvn test mvn integration-test mvn package mvn site mvn release mvn deploy Maven Build  Lifecycle Valerio Schiavoni  [email_address]  UniRoma3
cool features gestione dichiarativa delle dipendenze automazione delle procedure tipiche di ogni progetto software supporto nativo con sistemi di integrazione continua (CI) Valerio Schiavoni  [email_address]  UniRoma3
CI: Continuum <scm> <connection> scm:svn:svn://svn.repo/proj/trunk </connection> </scm> <ciManagement> <notifiers> <type>email | irc | jabber | ..</type> <configuration>...</configuration> </notifiers> </ciManagement> checkout sorgenti gestione notifiche Valerio Schiavoni  [email_address]  UniRoma3
Continuum: web gui Valerio Schiavoni  [email_address]  UniRoma3
ma in pratica? creiamo in nostro primo progetto Maven usiamo un  archetype  maven è come applicare un “design pattern” al livello della struttura progetto the original pattern or model of which all things of the same type  are representations or copies Valerio Schiavoni  [email_address]  UniRoma3
esempio: blog-gui mvn archetype:create  -DgroupId=it.jugroma  -DartifactId=blog-gui Valerio Schiavoni  [email_address]  UniRoma3
esempio: blog-gui [INFO] Building Maven Default Project [INFO] Parameter: groupId, Value: it.jugroma [INFO] Parameter: packageName, Value: it.jugroma [INFO] Parameter: basedir, Value: ~/workspace [INFO] Parameter: package, Value: it.jugroma [INFO] Parameter: version, Value: 1.0-SNAPSHOT [INFO] Parameter: artifactId, Value: blog-gui [INFO] Archetype created in dir:  /home/schiavoni/workspace/blog-gui [INFO] BUILD SUCCESSFUL Valerio Schiavoni  [email_address]  UniRoma3
esempio: blog-gui pom.xml directory src/ Valerio Schiavoni  [email_address]  UniRoma3
esempio: blog-gui mvn package  blog-gui.jar <project  xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot;  xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0  http://maven.apache.org/maven-v4_0_0.xsd&quot;> <modelVersion>4.0.0</modelVersion> <groupId>it.jugroma</groupId> <artifactId>blog-gui</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>Maven Quick Start Archetype</name> <url>http://maven.apache.org</url> <dependencies>..junit...</dependencies> </project> Valerio Schiavoni  [email_address]  UniRoma3
esempio: blog-gui src/ /main /java/ /it/jugroma/ App.java /test /java/ /it/jugroma/ AppTest.java Valerio Schiavoni  [email_address]  UniRoma3
esempio: blog-gui Aggiungiamo il supporto per lo sviluppo dentro Eclipse: genera per noi  .classpath  ,  .project Plugin Maven per Eclipse e non il contrario ! (vedremo dopo..) mvn eclipse:eclipse Valerio Schiavoni  [email_address]  UniRoma3
Maven2 & Eclipse Update Site:  http://m2eclipse.codehaus.org/ Valerio Schiavoni  [email_address]  UniRoma3
esempio 2: blog-web mvn archetype:create -DarchetypeGroupId= org.apache.maven.archetypes -DarchetypeArtifactId= maven-archetype-webapp -DgroupId=it.jugroma -DartifactId=blog-web Valerio Schiavoni  [email_address]  UniRoma3
esempio 2: blog-web mvn package  blog-web.war <project  ... <packaging>war</packaging>  ... </project> Valerio Schiavoni  [email_address]  UniRoma3
e ora che sapete tutto? Mailing-List: ~100 email /day sperimentate con i plugins ce n'è per tutti i gusti ed esigenze e scriverne uno è facilissimo contribuite al Mojo Project mojo.codehaus.org Contribuite alla documentazione !! Valerio Schiavoni  [email_address]  UniRoma3
domande ? Valerio Schiavoni  [email_address]  UniRoma3

More Related Content

PPTX
ASP.NET 4.6 e ASP.NET 5...l'evoluzione del web
PDF
Angular js o React? Spunti e idee per la scelta di un framework
PPTX
ASP.NET MVC 6 - uno sguardo al futuro
PPTX
ASP.NET performance optimization
PPTX
Selenium e testing web - di Alessio Benedetti
PPTX
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
PPTX
Blazor with .net 5 - di Gerardo Greco
PPT
What's New in ASP.NET 4.5 and Visual Studio 2012
ASP.NET 4.6 e ASP.NET 5...l'evoluzione del web
Angular js o React? Spunti e idee per la scelta di un framework
ASP.NET MVC 6 - uno sguardo al futuro
ASP.NET performance optimization
Selenium e testing web - di Alessio Benedetti
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
Blazor with .net 5 - di Gerardo Greco
What's New in ASP.NET 4.5 and Visual Studio 2012

What's hot (20)

PPTX
Javascript task automation
PPTX
Angular and beyond
PPT
Generazione Dinamica di Codice in .NET
PPTX
Automatically deployment to Azure Web Sites
PDF
ASP.NET Core - dove siamo arrivati
ODP
ConfSL: Sviluppo Applicazioni web con Symfony
PPS
Sviluppo Web Agile Con MonoRail
PDF
Corso WebApp iOS - Lezione 09: Testing iOS WebApp
PPTX
Javascript task automation
PDF
WordPress REST API
PPTX
What's new in Asp.Net 4.5 (and WebApi)
PDF
Training Signal Webtrends
PPT
Build Automation Tips
PDF
Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...
PDF
ASP.NET Core - Razor Pages
PDF
Wasm and Blazor CDays keynote
PDF
PDF
Blazor ha vinto? Storie di casi reali
PPTX
Cloud Load Testing con Visual Studio Online
PDF
App Mobile Powerapps
Javascript task automation
Angular and beyond
Generazione Dinamica di Codice in .NET
Automatically deployment to Azure Web Sites
ASP.NET Core - dove siamo arrivati
ConfSL: Sviluppo Applicazioni web con Symfony
Sviluppo Web Agile Con MonoRail
Corso WebApp iOS - Lezione 09: Testing iOS WebApp
Javascript task automation
WordPress REST API
What's new in Asp.Net 4.5 (and WebApi)
Training Signal Webtrends
Build Automation Tips
Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...
ASP.NET Core - Razor Pages
Wasm and Blazor CDays keynote
Blazor ha vinto? Storie di casi reali
Cloud Load Testing con Visual Studio Online
App Mobile Powerapps
Ad

Similar to Maven: Convention over Configuration (16)

PDF
Maven from dummies
PDF
Maven - Aprile 2010
PPTX
Apache Maven - Gestione di progetti Java e build automation
PDF
SPRING - MAVEN - REST API (ITA - Luglio 2017)
ODP
Working between the clouds (versione completa)
ODP
Working between the clouds
PDF
Lezione 4: I tool Ant e Subversion
PDF
Continous integration e jenkins
PDF
Maven Eclipse
PDF
Apache Maven
PDF
m2eclipse: integrazione maven2 in eclipse IDE
PDF
Seminario team working - 21-1-2015
PDF
Tiscali bootcamp
PPTX
MuleSoft Meetup - Mule Library
PDF
Codemotion fuse presentation
PDF
Anatomia di un progetto open-source
Maven from dummies
Maven - Aprile 2010
Apache Maven - Gestione di progetti Java e build automation
SPRING - MAVEN - REST API (ITA - Luglio 2017)
Working between the clouds (versione completa)
Working between the clouds
Lezione 4: I tool Ant e Subversion
Continous integration e jenkins
Maven Eclipse
Apache Maven
m2eclipse: integrazione maven2 in eclipse IDE
Seminario team working - 21-1-2015
Tiscali bootcamp
MuleSoft Meetup - Mule Library
Codemotion fuse presentation
Anatomia di un progetto open-source
Ad

More from vschiavoni (16)

PDF
From Draft to DSN - How to Get your Paper In [DSN 2025 Doctoral Forum Keynote]
PDF
Impact of Network Topologies on Blockchain Performance
PDF
ACM Middleware 2024 PC Chairs Opening Remarks
PDF
Combining Asynchronous Task Parallelism and Intel SGX for Secure Deep Learning
PDF
DEBS-2023.pdf
PDF
Shielding Federated Learning Systems against Inference Attacks with ARM Trust...
PDF
Labri 2021-invited-talk
PDF
SafeFS: A Modular Architecture for Secure User-Space File Systems (One FUSE t...
PDF
X-Search: Revisiting private web search using Intel SGX
PDF
SPLAY: Distributed Systems Made Simple
PDF
Actor concurrency for the JVM: a case study
KEY
DHT and NAT
PDF
FraSCAti: An Open SCA Platform
PPT
Spring Intro
PPT
Scorware - Spring Introduction
PDF
BindingFactory
From Draft to DSN - How to Get your Paper In [DSN 2025 Doctoral Forum Keynote]
Impact of Network Topologies on Blockchain Performance
ACM Middleware 2024 PC Chairs Opening Remarks
Combining Asynchronous Task Parallelism and Intel SGX for Secure Deep Learning
DEBS-2023.pdf
Shielding Federated Learning Systems against Inference Attacks with ARM Trust...
Labri 2021-invited-talk
SafeFS: A Modular Architecture for Secure User-Space File Systems (One FUSE t...
X-Search: Revisiting private web search using Intel SGX
SPLAY: Distributed Systems Made Simple
Actor concurrency for the JVM: a case study
DHT and NAT
FraSCAti: An Open SCA Platform
Spring Intro
Scorware - Spring Introduction
BindingFactory

Maven: Convention over Configuration

  • 1. Maven: CoC Maven C onvention O ver C onfiguration V alerio S chiavoni [email_address] Università Degli Studi Roma3 Javaday Roma - 02/12/2006
  • 2. agenda cosa è maven key concepts cool features esempi di utilizzo Valerio Schiavoni [email_address] UniRoma3
  • 3. cosa è maven un semplice build tool ? build, test, package, document, deploy si ma più in generale: l'applicazione di patterns comuni all'infrastruttura di build di un progetto Valerio Schiavoni [email_address] UniRoma3
  • 4. do you know your sources ? familiarità con un progetto difficile per il nuovo sviluppatore spesso è un inferno script make o ant custom tanti modi di fare la stessa cosa senza convenzioni... Valerio Schiavoni [email_address] UniRoma3
  • 5. come si usa maven installazione: scompattare un file zip configurazione: export MAVEN_HOME e poi: da linea di comando: mvn ... usando plugin per il vostro IDE (eclipse, netbeans, idea) Valerio Schiavoni [email_address] UniRoma3
  • 6. key point: POM POM Developers Dependencies Plugins Organization Reporting Issue Management Continuous Integration Source Control Management Mailing Lists Valerio Schiavoni [email_address] UniRoma3
  • 7. cool features gestione dichiarativa delle dipendenze automazione delle attività più tipiche di ogni progetto supporto nativo con sistemi di integrazione continua (CI) Valerio Schiavoni [email_address] UniRoma3
  • 8. Dipendenze <dependency> <groupId>junit</groupId> <artifactId> junit </artifactId> <version>4.0</version> <scope>test</scope> </dependency> Valerio Schiavoni [email_address] UniRoma3
  • 9. gestione delle dipendenze un semplice grafo delle dipendenze dipendenze dirette my app commons-a commons-b commons-c commons-d commons-e Maven (2) gestisce automaticamente le dipendenze transitive dipendenze transitive Valerio Schiavoni [email_address] UniRoma3
  • 10. dove vengono risolte ? repository locale repository remoto www.ibiblio.org/maven2 vari mirror www.mvnrepository.com http://maven.apache.org/archiva/ Valerio Schiavoni [email_address] UniRoma3
  • 11. repositories dependency resolution local repository remote repository locale al vostro pc da qualche parte sul web Valerio Schiavoni [email_address] UniRoma3
  • 12. e con librerie private ? non tutto è open-source... è possibile installare localmente le librerie nel proprio repository locale vediamo come o referenziare direttamente la libreria di interesse sul file-system sconsigliato Valerio Schiavoni [email_address] UniRoma3
  • 13. mvn install per installare la propria libreria: mvn -Dfile=myLib.jar -DgroupId=foo -DartifactId=bar -Dversion=1.0 -Dpackaging=jar -DgeneratePom=true install Valerio Schiavoni [email_address] UniRoma3
  • 14. cool features gestione dichiarativa delle dipendenze automazione delle attività tipiche di ogni progetto software supporto nativo con sistemi di integrazione continua (CI) Valerio Schiavoni [email_address] UniRoma3 Valerio Schiavoni [email_address] UniRoma3
  • 15. attività tipiche : ovvero.. come compilate il vostro progetto ? e come eseguite i test ? test di unità e di integrazione insieme ? e come lo “ impacchettate ” ? war, jar, ear, zip, ... e i rilasci ? e il deploy? ? Valerio Schiavoni [email_address] UniRoma3
  • 16. ...ecco come! mvn compile mvn test mvn integration-test mvn package mvn site mvn release mvn deploy Maven Build Lifecycle Valerio Schiavoni [email_address] UniRoma3
  • 17. cool features gestione dichiarativa delle dipendenze automazione delle procedure tipiche di ogni progetto software supporto nativo con sistemi di integrazione continua (CI) Valerio Schiavoni [email_address] UniRoma3
  • 18. CI: Continuum <scm> <connection> scm:svn:svn://svn.repo/proj/trunk </connection> </scm> <ciManagement> <notifiers> <type>email | irc | jabber | ..</type> <configuration>...</configuration> </notifiers> </ciManagement> checkout sorgenti gestione notifiche Valerio Schiavoni [email_address] UniRoma3
  • 19. Continuum: web gui Valerio Schiavoni [email_address] UniRoma3
  • 20. ma in pratica? creiamo in nostro primo progetto Maven usiamo un archetype maven è come applicare un “design pattern” al livello della struttura progetto the original pattern or model of which all things of the same type are representations or copies Valerio Schiavoni [email_address] UniRoma3
  • 21. esempio: blog-gui mvn archetype:create -DgroupId=it.jugroma -DartifactId=blog-gui Valerio Schiavoni [email_address] UniRoma3
  • 22. esempio: blog-gui [INFO] Building Maven Default Project [INFO] Parameter: groupId, Value: it.jugroma [INFO] Parameter: packageName, Value: it.jugroma [INFO] Parameter: basedir, Value: ~/workspace [INFO] Parameter: package, Value: it.jugroma [INFO] Parameter: version, Value: 1.0-SNAPSHOT [INFO] Parameter: artifactId, Value: blog-gui [INFO] Archetype created in dir: /home/schiavoni/workspace/blog-gui [INFO] BUILD SUCCESSFUL Valerio Schiavoni [email_address] UniRoma3
  • 23. esempio: blog-gui pom.xml directory src/ Valerio Schiavoni [email_address] UniRoma3
  • 24. esempio: blog-gui mvn package blog-gui.jar <project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd&quot;> <modelVersion>4.0.0</modelVersion> <groupId>it.jugroma</groupId> <artifactId>blog-gui</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>Maven Quick Start Archetype</name> <url>http://maven.apache.org</url> <dependencies>..junit...</dependencies> </project> Valerio Schiavoni [email_address] UniRoma3
  • 25. esempio: blog-gui src/ /main /java/ /it/jugroma/ App.java /test /java/ /it/jugroma/ AppTest.java Valerio Schiavoni [email_address] UniRoma3
  • 26. esempio: blog-gui Aggiungiamo il supporto per lo sviluppo dentro Eclipse: genera per noi .classpath , .project Plugin Maven per Eclipse e non il contrario ! (vedremo dopo..) mvn eclipse:eclipse Valerio Schiavoni [email_address] UniRoma3
  • 27. Maven2 & Eclipse Update Site: http://m2eclipse.codehaus.org/ Valerio Schiavoni [email_address] UniRoma3
  • 28. esempio 2: blog-web mvn archetype:create -DarchetypeGroupId= org.apache.maven.archetypes -DarchetypeArtifactId= maven-archetype-webapp -DgroupId=it.jugroma -DartifactId=blog-web Valerio Schiavoni [email_address] UniRoma3
  • 29. esempio 2: blog-web mvn package blog-web.war <project ... <packaging>war</packaging> ... </project> Valerio Schiavoni [email_address] UniRoma3
  • 30. e ora che sapete tutto? Mailing-List: ~100 email /day sperimentate con i plugins ce n'è per tutti i gusti ed esigenze e scriverne uno è facilissimo contribuite al Mojo Project mojo.codehaus.org Contribuite alla documentazione !! Valerio Schiavoni [email_address] UniRoma3
  • 31. domande ? Valerio Schiavoni [email_address] UniRoma3

Editor's Notes

  • #2: Theme created by Sakari Koivunen and Henrik Omma Released under the LGPL license.