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
Dobbiamo automatizzare 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.
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 Codice del progetto Test del progetto Altre risorse del progetto... (es. immagini) Pacchetti, altri file generati,... File di configurazione
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 Dire a maven quali librerie servono 3. Ripetere il procedimento per poter eseguire l applicazione
Esempio Vogliamo utilizzare nel nostro progetto la libreria Google guava Tutto ciò che ci serve fare è aggiungere queste linee nel file POM! <dependency> <groupid>com.google.guava</groupid> <artifactid>guava</artifactid> <version>11.0</version> <type>jar</type> <scope>compile</scope> </dependency>
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 Compila, esegue i test e genera il pacchetto JAR Crea il package e lo copia nel repository maven locale test Esegue i test di unità clean Cancella la directory target site Genera il sito del progetto
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-buildmaven
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