Es el entorno que he establecido en mi empresa, y estoy trabajando en este momento.
Descripción del entorno.
Somos un equipo de 4 desarrolladores , trabajando en un proyecto de escritorio Java . El código fuente está bajo Mercurial , con el repositorio principal alojado en nuestro servidor de desarrollo. Usamos principalmente TortoiseHg para trabajar con Mercurial. Los proyectos que abrimos provienen de BitBucket . El proyecto está construido con Maven . El IDE que utilizamos es Netbeans , que funciona de manera impresionante con Maven (también funciona bien con Mercurial).
Nuestro servidor de desarrollo ejecuta Archiva , que es un repositorio proxy de Maven. Usamos maven para construir el proyecto, pero también lo usamos para ejecutarlo (mvn exec), para desplegar los artefactos generados en Archiva (lanzamiento de mvn) y para generar un ensamblaje a partir de los artefactos alojados por Archiva (ensamblaje de mvn).
También tenemos un rastreador de errores de Redmine , y está al tanto de los repositorios de Mercurial. Utilizamos un cliente RSS para estar informado de la actividad del proyecto (de Redmine y Mercurial). También tenemos un servidor Jabber para enviar mensajes y archivos entre nosotros.
Configuramos un servidor Hudson (integración continua) y un servidor Sonar (métricas de código). Pero en la práctica realmente no lo usamos.
Tenemos la opción de usar Windows o Linux
Pasos para hacer un lanzamiento
Ejemplo para lanzar una versión 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