Eclipse e Subversion - Intranet...

Post on 03-Jun-2020

4 views 0 download

Transcript of Eclipse e Subversion - Intranet...

Eclipse e Subversion

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

Svn: condivisione progetto

Svn: condivisione progetto

Svn: condivisione progetto

Svn: condivisione progetto

Svn: commit

Svn: commit

Svn: commit

Svn: commit

Svn: checkout

Svn: checkout

Svn: checkout

Svn: checkout

Svn: checkout

Svn: checkout

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

Processo di sviluppo

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

•  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

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à.

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.

Validate

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

altre fasi.

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.

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.

Package

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

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.

Deploy

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

Caratteristiche aggiuntive

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

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

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)

Struttura dei file del Progetto

File di configurazione

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

Codice del progetto Test del progetto

Pacchetti, altri file generati, ...

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>

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

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!

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>

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.

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.

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.

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

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.

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

Maven: esempio

Maven: esempio

Maven: esempio

Maven: esempio

Maven: esempio

Maven: esempio

Maven: esempio

Maven: esempio

Maven: esempio

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

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

Sonar: schermata principale