É o ambiente que eu montei na minha empresa e estou trabalhando agora.
Descrição do ambiente
Somos uma equipe de 4 desenvolvedores , trabalhando em um projeto de desktop Java . O código fonte está no Mercurial , com o repositório principal hospedado em nosso servidor de desenvolvimento. Usamos principalmente o TortoiseHg para trabalhar com o Mercurial. Os projetos que abrimos são de origem no BitBucket . O projeto é construído com o Maven . O IDE que usamos é o Netbeans , que funciona de maneira impressionante com o Maven (também funciona bem com o Mercurial).
Nosso servidor de desenvolvimento executa o Archiva , que é um repositório proxy Maven. Usamos o maven para construir o projeto, mas também para executá-lo (mvn exec), implantar os artefatos gerados no Archiva (liberação do mvn) e gerar um assembly a partir dos artefatos hospedados no Archiva (mvn assembly).
Também temos um rastreador de bugs do Redmine e ele está ciente dos repositórios do Mercurial. Utilizamos um cliente RSS para ser informado sobre a atividade do projeto (da Redmine e Mercurial). Também temos um servidor Jabber para enviar mensagens e arquivos um para o outro.
Configuramos um servidor Hudson (integração contínua) e um servidor Sonar (métricas de código). Mas, na prática, realmente não o usamos.
Temos a opção de usar Windows ou Linux
Etapas para fazer um lançamento
Exemplo para liberar uma versão 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