Maven: CoC <ul><ul><li>Maven </li></ul></ul><ul><ul><li>C onvention  O ver  C onfiguration </li></ul></ul><ul><ul><li>V al...
agenda <ul><li>cosa è maven </li></ul><ul><li>key concepts </li></ul><ul><li>cool features </li></ul><ul><li>esempi di uti...
cosa è maven <ul><li>un  semplice  build tool ?  </li></ul><ul><ul><li>build, test, package, document, deploy </li></ul></...
do you know  your sources ? <ul><li>familiarità con un progetto difficile </li></ul><ul><li>per il nuovo sviluppatore spes...
come si usa maven <ul><li>installazione: scompattare un file zip </li></ul><ul><li>configurazione: export MAVEN_HOME </li>...
key point: POM POM Developers Dependencies Plugins Organization Reporting Issue  Management Continuous Integration Source ...
cool features <ul><li>gestione dichiarativa delle dipendenze </li></ul><ul><li>automazione delle attività più tipiche di o...
Dipendenze   <dependency>   <groupId>junit</groupId>   <artifactId> junit </artifactId>   <version>4.0</version>   <scope>...
gestione delle dipendenze <ul><li>un semplice grafo delle dipendenze </li></ul>dipendenze dirette my app commons-a commons...
dove vengono risolte ? <ul><li>repository locale  </li></ul><ul><li>repository remoto </li></ul><ul><ul><li>www.ibiblio.or...
repositories dependency resolution local repository remote repository locale al  vostro pc da qualche parte sul web Valeri...
e con librerie  private  ? <ul><li>non tutto è open-source... </li></ul><ul><li>è possibile installare localmente le libre...
mvn install <ul><li>per installare la propria libreria: </li></ul>mvn  -Dfile=myLib.jar -DgroupId=foo  -DartifactId=bar -D...
cool features <ul><li>gestione dichiarativa delle dipendenze </li></ul><ul><li>automazione delle attività tipiche di ogni ...
attività tipiche : ovvero.. <ul><li>come compilate il vostro progetto ? </li></ul><ul><li>e come eseguite i  test ? </li><...
...ecco come! <ul><li>mvn compile </li></ul><ul><li>mvn test </li></ul><ul><li>mvn integration-test </li></ul><ul><li>mvn ...
cool features <ul><li>gestione dichiarativa delle dipendenze </li></ul><ul><li>automazione delle procedure tipiche di ogni...
CI: Continuum <scm> <connection> scm:svn:svn://svn.repo/proj/trunk </connection> </scm> <ciManagement> <notifiers> <type>e...
Continuum: web gui Valerio Schiavoni  [email_address]  UniRoma3
ma in pratica? <ul><li>creiamo in nostro primo progetto Maven </li></ul><ul><li>usiamo un  archetype  maven </li></ul><ul>...
esempio: blog-gui mvn archetype:create  -DgroupId=it.jugroma  -DartifactId=blog-gui Valerio Schiavoni  [email_address]  Un...
esempio: blog-gui [INFO] Building Maven Default Project [INFO] Parameter: groupId, Value: it.jugroma [INFO] Parameter: pac...
esempio: blog-gui <ul><li>pom.xml </li></ul><ul><li>directory src/ </li></ul>Valerio Schiavoni  [email_address]  UniRoma3
esempio: blog-gui <ul><ul><li>mvn package  blog-gui.jar </li></ul></ul><project  xmlns=&quot;http://maven.apache.org/POM/4...
esempio: blog-gui <ul><li>src/ </li></ul><ul><ul><li>/main </li></ul></ul><ul><ul><li>/java/ </li></ul></ul><ul><ul><li>/i...
esempio: blog-gui <ul><li>Aggiungiamo il supporto per lo sviluppo dentro Eclipse: </li></ul><ul><li>genera per noi  .class...
Maven2 & Eclipse <ul><li>Update Site:  http://m2eclipse.codehaus.org/ </li></ul>Valerio Schiavoni  [email_address]  UniRoma3
esempio 2: blog-web mvn archetype:create -DarchetypeGroupId= org.apache.maven.archetypes -DarchetypeArtifactId= maven-arch...
esempio 2: blog-web <ul><li>mvn package  blog-web.war </li></ul><project  ... <packaging>war</packaging>  ... </project> V...
e ora che sapete tutto? <ul><li>Mailing-List: ~100 email /day </li></ul><ul><li>sperimentate con i plugins </li></ul><ul><...
domande ? Valerio Schiavoni  [email_address]  UniRoma3
Upcoming SlideShare
Loading in …5
×

Maven: Convention over Configuration

3,399 views

Published on

Slides presented at the first Roma Javaday (Italy).

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,399
On SlideShare
0
From Embeds
0
Number of Embeds
66
Actions
Shares
0
Downloads
64
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide
  • Theme created by Sakari Koivunen and Henrik Omma Released under the LGPL license.
  • Maven: Convention over Configuration

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

    ×