Maven: Convention over Configuration

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Notes on slide 1

    Theme created by Sakari Koivunen and Henrik Omma Released under the LGPL license.

    2 Favorites & 1 Group

    Maven: Convention over Configuration - Presentation Transcript

    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

    + vschiavonivschiavoni, 4 years ago

    custom

    2979 views, 2 favs, 1 embeds more stats

    Slides presented at the first Roma Javaday (Italy). more

    More info about this document

    CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

    Go to text version

    • Total Views 2979
      • 2972 on SlideShare
      • 7 from embeds
    • Comments 0
    • Favorites 2
    • Downloads 44
    Most viewed embeds
    • 7 views on http://www.jroller.com

    more

    All embeds
    • 7 views on http://www.jroller.com

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories

    Groups / Events