Versionamento do sistema com framework em jsf

Como fazer um versionamento correto no sistema em java ?

Por exemplo, 0.0.1
Por exemplo, 0.0.2

e assim por diante

Mudança automática de número e saber o que tem em cada versão.

Ahn?
Versionamento de que, afinal?

http://localhost:8181/desif-0.0.1

E ter um changelog automático, lógico se possível.

Se eu entendi direito (e acho que não, pois ainda não são 10 horas e eu ainda estou no modo automático), você quer algo como o SVN ou git?

Não Luis, isto já estamos usando, (GIT)

Tipo mudar o número do Snapshot, mas ele sabe o que tem em cada um.

Mais para o cliente ver e saber o que foi incluido (novo), alteração (correção), etc…

Você pode usar o plugin do GitFlow para o maven. Ele consegue fazer essa mudança automática da versão do projeto no pom, assim como outros plugins do gênero. Agora quanto a gerar um changelog amigável pra cada release, não conheço algo que o faça. O gitflow gera uma tag pra release e nessa tag contém as alterações feitas, mas em nível de código. Algo que poderia ser feito é criar como se fosse um readme e ir incrementando as funcionalidades da versão, por fim, ao gerar a release essas modificações do arquivo ficariam destacadas como inclusão no tag do GIT. É o mais próximo de manter um changelog “automatico” que consigo pensar.

Está utilizando o que para build? Maven? Já pensou em integrar isso com jenkins?
Acho que ele atende o que você quer.

O Jenkis por si só consegue alterar a versão do projeto no pom?

Cara, sinceramente, não sei. Apenas me veio à cabeça, pois é o que vejo sendo utilizado para controle de versão.
Maiores detalhes, apenas vendo a documentação ou alguém que manje de jenkins falando.

Acredito que por si só ele não tem essa capacidade. Aqui temos um job de release configurado para rodar o plugin do gitflow no build. Aí até conseguimos automatizar essa tarefa de modificar a versão do pom.xml de forma “transparente”.