È l'ambiente che ho creato nella mia azienda e sto lavorando proprio ora.
Descrizione dell'ambiente
Siamo un team di 4 sviluppatori , che lavorano su un progetto desktop Java . Il codice sorgente è in Mercurial , con il repository principale ospitato sul nostro server di sviluppo. Utilizziamo principalmente TortoiseHg per lavorare con Mercurial. I progetti che apriamo sono in BitBucket . Il progetto è stato creato con Maven . L'IDE che utilizziamo è Netbeans , che funziona molto bene con Maven (funziona anche con Mercurial).
Il nostro server di sviluppo esegue Archiva , che è un repository Maven proxy. Usiamo maven per costruire il progetto, ma lo usiamo anche per eseguirlo (mvn exec), per distribuire le risorse generate su Archiva (versione mvn) e per generare un assembly dalle risorse ospitate da Archiva (mvn assembly).
Abbiamo anche un bugtracker Redmine ed è a conoscenza dei repository Mercurial. Utilizziamo un client RSS per essere informati sull'attività del progetto (da Redmine e Mercurial). Abbiamo anche un server Jabber per inviare messaggi e file tra loro.
Abbiamo configurato un server Hudson (integrazione continua) e un server Sonar (metriche del codice). Ma in pratica non lo usiamo veramente.
Abbiamo la possibilità di utilizzare Windows o Linux
Passi per fare un rilascio
Esempio per rilasciare una versione 1.1.3
# tags the VCS, updates all the version numbers in the maven config file
mvn --batch-mode release:prepare -DreleaseVersion=1.1.3 -DdevelopmentVersion=1.1.4-SNAPSHOT
# performs a clean build, runs all tests, deploys to the server
mvn release:perform
# creates a unique jar (the final product) from the previously deployed artifacts (no recomilation involved)
<update the version number in a config file to 1.1.3>
mvn assembly:assembly