Download - Maven: Convention over Configuration
Maven: CoC
Maven
Convention Over Configuration
Valerio Schiavoni
Universit Degli Studi Roma3
Javaday Roma - 02/12/2006
Theme created bySakari Koivunen and Henrik OmmaReleased under the LGPL license.
agenda
cosa maven
key concepts
cool features
esempi di utilizzo
Valerio Schiavoni [email protected] UniRoma3
cosa maven
l'applicazione di patterns
comuni all'infrastruttura di
build di un progetto
un semplice build tool ?
build, test, package, document, deploy
si ma pi in generale:
Valerio Schiavoni [email protected] 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 protected] 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 protected] UniRoma3
key point: POM
POMDevelopersDependenciesPluginsOrganizationReportingIssue ManagementContinuousIntegrationSource ControlManagementMailing Lists
Valerio Schiavoni [email protected] 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 protected] UniRoma3
Dipendenze
junit junit 4.0 test
Valerio Schiavoni [email protected] UniRoma3
gestione delle dipendenze
un semplice grafo delle dipendenze
dipendenze dirette
dipendenze transitive
my appcommons-acommons-bcommons-ccommons-dcommons-eMaven (2) gestisce automaticamentele dipendenze transitive
Valerio Schiavoni [email protected] 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 protected] UniRoma3
repositories
localrepositoryremoterepository
dependencyresolution
locale al vostro pc
da qualcheparte sul web
Valerio Schiavoni [email protected] 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 protected] 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 protected] 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 protected] UniRoma3
Valerio Schiavoni [email protected] 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 protected] UniRoma3
...ecco come!
mvn compile
mvn test
mvn integration-test
mvn package
mvn site
mvn release
mvn deploy
MavenBuild Lifecycle
Valerio Schiavoni [email protected] 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 protected] UniRoma3
CI: Continuum
scm:svn:svn://svn.repo/proj/trunk
email | irc | jabber | .. ...
checkoutsorgentigestionenotifiche
Valerio Schiavoni [email protected] UniRoma3
Continuum: web gui
Valerio Schiavoni [email protected] 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 protected] UniRoma3
esempio: blog-gui
mvn archetype:create -DgroupId=it.jugroma -DartifactId=blog-gui
Valerio Schiavoni [email protected] 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 protected] UniRoma3
esempio: blog-gui
pom.xml
directory src/
Valerio Schiavoni [email protected] UniRoma3
esempio: blog-gui
4.0.0 it.jugroma blog-gui jar 1.0-SNAPSHOT Maven Quick Start Archetype http://maven.apache.org ..junit...
Valerio Schiavoni [email protected] UniRoma3
mvn package blog-gui.jar
esempio: blog-gui
src/
/main
/java/
/it/jugroma/
App.java
/test
/java/
/it/jugroma/
AppTest.java
Valerio Schiavoni [email protected] 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 protected] UniRoma3
Maven2 & Eclipse
Update Site: http://m2eclipse.codehaus.org/
Valerio Schiavoni [email protected] 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 protected] UniRoma3
esempio 2: blog-web
mvn package blog-web.war