Maven from dummies
Upcoming SlideShare
Loading in...5
×
 

Maven from dummies

on

  • 474 views

 

Statistics

Views

Total Views
474
Slideshare-icon Views on SlideShare
474
Embed Views
0

Actions

Likes
0
Downloads
12
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Maven from dummies Maven from dummies Presentation Transcript

    • Maven fromdummiesUna breve introduzione a Maven
    • Definizione di MavenProject Management Tool che supporta lo sviluppatore durante la gestione dellinterociclo di vita del progetto.Per raggiungere lobiettivo di fornire un supporto completo, Maven espone una serie difeatures: ● 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 delledipendenze● 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 allinterno dello spazio delledipendenze: { 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 nellartifact da deployare. Non è transitiva● runtime: inclusa nellartifact da deployare ma non a compile-time● import: non importa lartifact ma le dipendenze dell artifact.
    • Le fasi di un progettoIl ciclo di vita di un progetto è composto da un insieme di fasiben distinte: ● validate ● compile ● test ● package ● integration-test ● verify ● install ● deployognuna delle quali lancia un insieme di goal e dipende dallaprecedenti (ovvero lanciando package vengono eseguitevalidate, compile, test, package)
    • Goals e PluginsA ogni fase corrispondono uno o più goal (dipendente dalpackaging). Ad es. per un ear: package ==> ear:earad 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 luso delle property di Maven sui nostri file dirisorse: <property name="eclipselink.logging.level" value="${eclipseLinkLogLevel}"/>di default è disabilitato, per abilitarlo basta ridefinire il tagsulla cartella per la quale ne abbiamo bisogno, tipicamente: <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources>