Eclipse e Subversion - Intranet...
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