Maven from dummies
-
Upload
firenze-gtug -
Category
Documents
-
view
540 -
download
0
description
Transcript of Maven from dummies
Maven from dummiesUna breve introduzione a Maven
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.
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
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.
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.
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)
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
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
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
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>