Maven from dummies

10
Maven from dummies Una breve introduzione a Maven

description

 

Transcript of Maven from dummies

Page 1: Maven from dummies

Maven from dummiesUna breve introduzione a Maven

Page 2: Maven from dummies

Definizione di MavenProject Management Tool che supporta lo sviluppatore durante la gestione dell'intero ciclo di vita del progetto. Per raggiungere l'obiettivo di fornire un supporto completo, Maven espone una serie di features:

● build system: ha un sistema di building ben definito (da fasi) e facile da utilizzare● astrazione del progetto: realizzata mediante la presenza di un file "POM" dove

descriviamo il progetto senza indicare proceduralmente come.● definisce degli standard: si utilizza un approccio di tipo convention based● crea il sito del progetto: es. apache.org è fatto con Maven● definisce il ciclo di vita del progetto: mediante una gerarchia di "fasi", composte

da "goal", obiettivo specifico di una fase● basato su plugin: ad ogni goal è associato un plugin. I plugin utente sono la SPI

con la quale personalizziamo Maven.

Page 3: Maven from dummies

Il repository delle dipendenze● Maven è stato un precursore del "cloud" con

i suoi repository

● Il funzionamento è a cascata, ovvero○ local repository○ enterprise mirror○ cloud repository

● Il default è ○ local repository: $HOME/.m2/repository○ cloud repository: repo1.maven.org

Page 4: Maven from dummies

Dipendenze e coordinateUna dipendenza è identificata dalle coordinate all'interno dello spazio delle dipendenze:

{ groupId: obbligatorio, artifactId: obbligatorio,version: obbligatorio, packaging: default jar, classifier: default ""

}

Le dipendenze sono di due tipi:● release: la copia sul repository locale è definitiva. ● snapshot: viene con una certa frequenza controllato il repository remoto

se lo "snapshot" è stato aggiornato.

Page 5: Maven from dummies

Dipendenze e scope● test: utilizza per compilare src/test/java● system: non è sul repository di Maven ma sul local file

system● compile: comprende tutte le altre● provided: inclusa a compile time ma non nell'artifact da

deployare. Non è transitiva● runtime: inclusa nell'artifact da deployare ma non a

compile-time● import: non importa l'artifact ma le dipendenze dell'

artifact.

Page 6: Maven from dummies

Le fasi di un progettoIl ciclo di vita di un progetto è composto da un insieme di fasi ben distinte:● validate● compile● test● package● integration-test● verify● install● deployognuna delle quali lancia un insieme di goal e dipende dalla precedenti (ovvero lanciando package vengono eseguite validate, compile, test, package)

Page 7: Maven from dummies

Goals e PluginsA ogni fase corrispondono uno o più goal (dipendente dal packaging). Ad es. per un ear:

package ==> ear:ear

ad ogni goal corrisponde uno ed un solo plugin

ear:ear ==> org.apache.maven.plugins:maven-ear-

plugin:2.4.1:ear

Page 8: Maven from dummies

Moduli e sottomoduli● Possiamo organizzare i progetti più

complessi in sottomoduli, ovvero progetti che condividono lo stesso ciclo di build

● Possiamo anche definire moduli che ereditano da altri moduli

● Ovviamente è possibile una combinazione dei due

Page 9: Maven from dummies

Profili e proprietà● Profili: permettono la ridefinizione di

qualsiasi elemento del pom a partire da alcune condizioni o semplicemente da un parametro di mvn

● Proprietà: permettono la parametrizzazione interna o esterna del nostro POM o, attraverso il filtering, delle nostre risorse

Page 10: Maven from dummies

Resource filteringPermette l'uso delle property di Maven sui nostri file di risorse: <property name="eclipselink.logging.level"

value="${eclipseLinkLogLevel}"/>

di default è disabilitato, per abilitarlo basta ridefinire il tag sulla cartella per la quale ne abbiamo bisogno, tipicamente: <resources> <resource>

<directory>src/main/resources</directory>

<filtering>true</filtering>

</resource>

</resources>