Non preoccuparti degli archetipi fino a dopo
Per tutte le informazioni che devi sapere su Maven, leggi alcuni dei libri sul loro sito web . Tuttavia, è un po 'eccessivo per quello che stai cercando di ottenere.
Per iniziare, disponi la tua applicazione web seguendo la struttura Maven standard per le app web come segue. (Non hai bisogno di un archetipo Maven per questo, è solo un mucchio di cartelle standard, puoi farlo in 2 minuti).
src/main/java
- contiene il codice Java di produzione
src/main/resources
- contiene le risorse del percorso di classe di produzione (ad es. contesti di primavera)
src/main/webapp
- (contiene WEB-INF / web.xml ma nessuna cartella lib)
src/test/java
- contiene il codice Java di prova
src/test/resources
- contiene le risorse di test (ad esempio feed XML di esempio per i test dei servizi Web ecc.)
Plugin di base
Il prossimo passo è scegliere un mucchio di plugin. I soliti sospetti sono, ovviamente, quelli che supportano clean, compilate e risorse (vieni come parte di Maven ma puoi configurarli). Quindi avrai il tester dell'unità surefire e il plugin WAR. È abbastanza per creare un'applicazione Web molto semplice.
Plugin più avanzati
Il prossimo passo è introdurre Findbugs e plugin PMD che forniranno al tuo codice un approfondimento e segnalino vari potenziali problemi. Probabilmente vorrai avere JXR per il riferimento del codice sorgente, taglist per tracciare TODO e tag REFACTOR e così via. Soprattutto...
... Usa il plugin Jetty per le applicazioni web
Utilizzare il plug-in Jetty per eseguire il file WAR all'interno dell'IDE per un debug semplice. È veloce e piccolo e fa il lavoro molto velocemente. Avere Jetty come parte della tua build Maven rende il tuo progetto in grado di essere testato su qualsiasi macchina senza bisogno di un IDE con qualche pannello Server complesso configurato. Consente inoltre di dichiarare dipendenze da altri file WAR, il che a sua volta significa che è possibile generare un ambiente di lavoro completo costituito da più applicazioni Web, tutte con un singolo comando "mvn clean jetty: run". Funziona ovunque e puoi persino fornire una configurazione JNDI di prova in modo che le tue origini dati con iniezione a molla siano tutte configurate esternamente. Se combini questo approccio Jetty con una pagina HTML dimostrativa standard (src/test/resources/demo.html
) risparmierai una gran quantità di ore di sviluppo cercando di ottenere un ambiente locale funzionante. Un comando e il gioco è fatto. Semplice.
Configurazione del tuo IDE
Con Maven è facile poiché tutti i ragazzi grandi lo supportano: Eclipse, Netbeans e, ovviamente, il mio Intellij preferito. Basta puntare il tuo IDE su pom.xml e si occuperà di abbattere tutte le dipendenze elencate per te. Niente più confusione con WEB-INF/lib
. In Eclipse, in genere si utilizza File | Importa ... | Progetto Maven | pom.xml.
Integrazione con Hudson
Prima installa Hudson (è solo una webapp) e poi scegli come target il tuo sistema di controllo della versione in modo che controlli la versione appropriata. Il tuo ultimo passo è configurarlo in modo che utilizzi Maven per fare la build. Ovviamente Maven dovrà essere installato sul tuo computer di costruzione (supponendo che sia diverso dal tuo computer di sviluppo).
Hudson esegue solo le build dell'istantanea
Chiedi a Hudson di eseguire build di istantanee e di lasciare le build di rilascio a un processo manuale. L'uso di questo approccio significherà che gli sviluppatori possono condividere il loro codice con una revisione dell'istantanea (ad es. 1.0.0-SNAPSHOT) e solo se è in grado di passare la build verrà condiviso nel repository del team. Tipicamente, Hudson eseguirà "mvn clean deploy" anche se l'inclusione dell'obiettivo "site" potrebbe anche far parte del processo poiché creerà un piccolo sito Web di progetto per ogni build. Gli sviluppatori del team includeranno automaticamente la build dell'istantanea aggiornata nel loro progetto attraverso il processo di gestione delle dipendenze Maven.
Hudson offre numerosi plug-in in grado di supportare tutti i tipi di metriche. Il mio preferito è tenere traccia del numero di test superati per progetto nel tempo. È fantastico mostrare alla direzione che il conteggio e la copertura del test unitario sono in costante aumento.
Guida generale alla configurazione
Dividi i tuoi repository almeno nella seguente struttura:
- team-release - Tutti i tuoi manufatti di produzione rilasciati vanno qui
- team-snapshot - Tutti i tuoi artefatti di sviluppo snapshot vanno qui
- release di terze parti - Tutte le librerie di terze parti supportate vanno qui (ad es. Spring, Hibernate ecc.)
Gli account utente degli sviluppatori non dovrebbero essere in grado di scrivere nei repository del team, né istantanee né versioni. Ciò consentirebbe a uno sviluppatore di eludere Hudson se ha fretta e diventerà rapidamente la norma.
Assicurati di scaricare sempre le firme di origine, javadocs e SHA per tutte le terze parti. Jarvana è un eccellente esploratore di repository per tutte quelle classi difficili da trovare.
Prendi in considerazione l'installazione di un gestore di repository come Nexus o Artifactory per consentire un migliore controllo sul tuo repository in continua crescita.