maven: convention over configuration

Download Maven: Convention over Configuration

If you can't read please download the document

Upload: vschiavoni

Post on 16-Apr-2017

3.387 views

Category:

Technology


0 download

TRANSCRIPT

Maven: CoC

Maven

Convention Over Configuration

Valerio Schiavoni

[email protected]

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