Segundo a documentação oficial (Maven by Example - Chapter 6. A Multi-module Project), é indicado que a versão seja definida somente no projeto Pai (parent) e que os módulos do projeto herdem a versão, dessa forma facilitando e centralizando o processo de alteração da versão.
No projeto "parent":
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.sonatype.mavenbook.optimize</groupId> <artifactId>simple-parent</artifactId> <packaging>pom</packaging>
<version>1.0</version>
<name>Chapter 8 Simple Parent Project</name> <modules> <module>simple-command</module> <module>simple-model</module> <module>simple-weather</module> <module>simple-persist</module> <module>simple-webapp</module> </modules> ... </project>
E no módulo :
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.sonatype.mavenbook.optimize</groupId> <artifactId>simple-parent</artifactId>
<version>1.0</version>
</parent> <artifactId>simple-command</artifactId> <packaging>jar</packaging> <name>Chapter 8 Simple Command Line Tool</name> ... </project>
Perceba que não existe definição de versão para o módulo em si e sim uma referência à qual versão do "parent" este módulo deve herdar.
Mesmo utilizando essa estratégia, nos momentos em que é necessário gerar uma nova versão o processo de atualização da mesma nos arquivos pom.xml dos módulos se torna uma tarefa desagradável e passível de erro. Uma alternativa para facilitar a vida é utilizar o plugin Versions-Maven, mais especificamente o "goal" versions:set.
Por exemplo:
mvn versions:set -DnewVersion=2.0
O comando acima irá atualizar a versão do "parent" e as referências à essa versão em todos os módulos do projeto de 1.0 para 2.0
Se por um acaso desejar reverter as alterações realizadas, o comando a seguir pode ser executado:
mvn versions:revert
Caso tudo esteja de acordo, as alterações podem ser confirmadas :
mvn versions:commit
Em tempo: Por padrão, esse plugin realiza um backup das versões anteriores dos arquivos pom.xml.
Se você estiver seguro o bastante, você pode desativar esta opção utilizando o parâmetro -DgenerateBackupPoms=false
Para a documentação detalhada, acesse o link http://mojo.codehaus.org/versions-maven-plugin/set-mojo.html
Não deixe de dar uma olhada também no "goal" versions:update-child-modules :
"versions:update-child-modules: updates the parent section of the child modules of a project so the version matches the version of the current project. For example, if you have an aggregator pom that is also the parent for the projects that it aggregates and the children and parent versions get out of sync, this mojo can help fix the versions of the child modules. (Note you may need to invoke Maven with the -N option in order to run this goal if your project is broken so badly that it cannot build because of the version mis-match)."
Em um próximo post falarei sobre o plugin Maven Release Plugin, o qual possui um "goal" com função semelhante, o release:update-versions, porém agrega uma série de outras atividades auxiliares no processo de release de uma versão de um projeto Maven.