Eclipse e Subversion - Intranet...

53
Eclipse e Subversion

Transcript of Eclipse e Subversion - Intranet...

Page 1: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Eclipse e Subversion

Page 2: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Prerequisito: creare un repository���gratuito su http://www.assembla.com

Page 3: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Svn: condivisione progetto

Page 4: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Svn: condivisione progetto

Page 5: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Svn: condivisione progetto

Page 6: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Svn: condivisione progetto

Page 7: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Svn: commit

Page 8: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Svn: commit

Page 9: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Svn: commit

Page 10: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Svn: commit

Page 11: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Svn: checkout

Page 12: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Svn: checkout

Page 13: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Svn: checkout

Page 14: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Svn: checkout

Page 15: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Svn: checkout

Page 16: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Svn: checkout

Page 17: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Gestione dei Progetti

Page 18: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Progetti Software

•  Composti da più moduli. •  Usano librerie di terze parti. •  Necessitano di essere tenuti aggiornati

LO SVILUPPO NON È SOLO SCRIVERE CODICE

Page 19: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Processo di sviluppo

•  Gestione delle dipendenze •  Compilazione (building) •  Testing •  Creazione dei pacchetti (packaging) •  Deployment •  Rapporti e metriche •  Documentazione

Page 20: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

•  Gli sviluppatori configurano gli strumenti per automatizzare le operazioni frequenti, gli strumenti faranno il resto.

•  Automatizzare le attività permette di risparmiare tempo perché rende tali attività facilmente ripetibili e riproducibili.

Dobbiamo automatizzare

Page 21: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

L’approccio maven

•  Permette di automatizzare le operazioni di gestione dei progetti.

•  Mette a disposizione delle fasi predefinite per

supportare il ciclo di sviluppo del software.

•  Facilmente estendibile utilizzando dei plug-in per aumentare le funzionalità.

Page 22: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Gestione dei progetti con maven: concetto di “build”

•  Composta da diverse fasi 1.  Validate 2.  Compile 3.  Test 4.  Package 5.  Install 6.  Deploy

Le fasi sono sequenziali. Ogni fase richiede l’esecuzione corretta della fase precedente.

Page 23: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Validate

•  Maven controlla che il progetto sia configurato correttamente. •  Correttezza del file di configurazione. •  Disponibilità di tutto ciò che è richiesto dalle

altre fasi.

Page 24: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Compile

•  Questa fase compila tutti i file Java contenuti nel progetto.

•  È utile per gestire e separare correttamente le interdipendenze tra le varie parti del progetto.

Page 25: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Test

•  Esegue i test automatizzati e crea un rapporto con il loro esito.

•  Nota: un fallimento in un test bloccherà l’esecuzione delle fasi successive.

Page 26: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Package

•  Crea un pacchetto (solitamente un jar) contenente il codice compilato.

Page 27: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Install

•  Copia il pacchetto nel repository locale. •  Una volta che il pacchetto è installato nel

repository locale, può essere utilizzato come una dipendenza per altri progetti.

Page 28: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Deploy

•  Pubblica il pacchetto in un repository remoto in modo che il pacchetto sia disponibile pubblicamente.

Page 29: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Caratteristiche aggiuntive

•  Attraverso l’adozione di plug-in è possibile aggiungere altre caratteristiche.

•  Ad esempio: generazione della documentazione, rapporti, metriche, ...

Page 30: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Come funziona

•  Maven si basa su una serie di convenzioni: •  Struttura delle directory standard •  Stesso modo per gestire tutti i progetti •  Tutto si configura attraverso un file

Project Object Model (POM)

Page 31: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Struttura dei file del Progetto

File di configurazione

Altre risorse del progetto... ���(es. immagini)

Codice del progetto Test del progetto

Pacchetti, altri file generati, ...

Page 32: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Un semplice file POM <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>it.polimi.dei</groupId> <artifactId>esercitazioniIngegneriaDelSoftware</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>esercitazioniIngegneriaDelSoftware</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies></project>

Page 33: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Gestione delle dipendenze

metodo tradizionale con maven

1.  Cercare le librerie sul web 2.  Scaricare e configurare le

librerie richieste e le loro dipendenze

3.  Ripetere il procedimento per poter eseguire l’applicazione

Dire a maven quali librerie servono

Page 34: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Esempio

<dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>11.0</version><type>jar</type><scope>compile</scope>

</dependency>

Vogliamo utilizzare nel nostro progetto la libreria Google guava

Tutto ciò che ci serve fare è aggiungere queste

linee nel file POM!

Page 35: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Esempio Come gestisce maven il fatto che una libreria sia richiesta solo al momento del testing?

Tutto ciò che ci serve fare è aggiungere queste

linee nel file POM!

<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.8.1</version> <scope>test</scope> </dependency>

Page 36: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Gestione delle dipendenze

•  Supporto per più versioni delle stesse librerie.

•  Esiste un repository a livello di sistema per evitare che librerie richieste da più progetti siano duplicate.

•  Presenza di repository remoti (pubblici) con una gran quantità di software disponibile.

Page 37: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Compilazione •  Non è necessario invocare manualmente il

compilatore. •  I progetti sono compilati utilizzando le

informazioni contenute nel file POM. •  Maven è in grado automaticamente di capire

dove trovare i file sorgenti, le librerie richeste e altre informazioni necessarie per compilare l’applicazione.

Page 38: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Testing

•  Il testing è un’attività indispensabile per assicurarsi che l’applicazione funzioni correttamente •  Maven si integra con JUnit •  Ogni volta che viene ricreato il pacchetto con

l’applicazione, tutti i test sono eseguiti.

Page 39: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Packaging

•  I file compilati sono “pacchettizzati” in un unico archivio.

•  Maven supporta diversi tipi di pacchetti: jar, war, ... •  I pacchetti creati sono disponibili nella directory target

Page 40: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Generazione rapporti •  Rende più semplice generare rapporti e

documentazione per i progetti •  Documentazione API •  Risultati dei test e copertura del codice •  Qualità del codice

•  Le informazioni contenute nei rapporti sono essere rese disponibili attraverso un sito web.

Page 41: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Comandi utili

package

install

test

Compila, esegue i test e genera il pacchetto JAR

Crea il package e lo copia nel repository maven locale

Esegue i test di unità

site Genera il sito del progetto

clean Cancella la directory target

Page 42: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Maven: esempio

Page 43: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Maven: esempio

Page 44: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Maven: esempio

Page 45: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Maven: esempio

Page 46: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Maven: esempio

Page 47: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Maven: esempio

Page 48: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Maven: esempio

Page 49: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Maven: esempio

Page 50: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Maven: esempio

Page 51: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Risorse online su Maven •  Sito ufficiale:

•  http://maven.apache.org

• Manuali consultabili online:

•  http://www.sonatype.com/books/mvnref-book/reference/

•  http://www.maestrodev.com/better-build-maven

Page 52: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Revisione progetto: sonar •  Analisi del software prodotto:

•  Duplicazione del codice

•  Copertura del testing

• Numero di linee / classi / commenti

•  Rilevamento “smell”

• Molto altro...

•  Riferimenti: http://www.sonarsource.org

Page 53: Eclipse e Subversion - Intranet DEIBhome.deib.polimi.it/dubois/provafinale/gestioneprogetti.pdfL’approccio maven! • Permette di automatizzare le operazioni di gestione dei progetti.!!

Sonar: schermata principale