Eu tenho um projeto multi-módulo maven. Pretendemos versão todos esses módulos juntos. Mas, a partir de agora, estou terminando a versão codificada em cada módulo pom.xml, como abaixo
<parent>
<artifactId>xyz-application</artifactId>
<groupId>com.xyz</groupId>
<version>2.50.0.g</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.xyz</groupId>
<artifactId>xyz-Library</artifactId>
<version>2.50.0.g</version>
e o módulo pai principal tem a configuração abaixo
<modelVersion>4.0.0</modelVersion>
<groupId>com.xyz</groupId>
<artifactId>xyz-application</artifactId>
<version>2.50.0.g</version>
<packaging>pom</packaging>
Respostas:
Use
versions:set
no plug-in version-maven :Ele ajustará todas as versões pom, versões pai e versões de dependência em um projeto de vários módulos.
Se você cometeu um erro, faça
depois, ou
se você está feliz com os resultados.
Nota: esta solução assume que todos os módulos também usam o pom agregado como pom pai, um cenário que foi considerado padrão no momento desta resposta. Se não for esse o caso, procure a resposta de Garret Wilson .
fonte
versions:set
se pode especificar-DgenerateBackupPoms=false
, como padrão, este plugin faz backup de arquivos pom originais.versions:commit
: "Remove o backup inicial do pom, aceitando as alterações".A resposta fornecida assume que o projeto em questão usa a herança do projeto além da agregação do módulo. De fato, esses são conceitos distintos:
https://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Project_Inheritance_vs_Project_Aggregation
Alguns projetos podem ser uma agregação de módulos, mas ainda não possuem um relacionamento pai-filho entre o POM do agregador e os módulos agregados. (Pode não haver uma relação pai-filho, ou os módulos filhos podem usar um POM separado como o "pai".) Nessas situações, a resposta fornecida não funcionará.
Após muita leitura e experimentação, verifica-se que há uma maneira de usar o plug - in do Maven para atualizar não apenas o POM agregador, mas também todos os módulos agregados; é a
processAllModules
opção O seguinte comando deve ser executado no diretório do projeto agregador:O Versions Maven Plugin não apenas atualiza as versões de todos os módulos contidos, como também atualiza as dependências entre módulos !!!! Esta é uma vitória enorme e economizará muito tempo e evitará todo tipo de problemas.
Obviamente, não esqueça de confirmar as alterações em todos os módulos, o que você também pode fazer com o mesmo switch:
Você pode decidir dispensar completamente o POMS de backup e fazer tudo em um comando:
fonte
versions:set
plug-in é que-DoldVersion='*'
, em mojohaus.org/versions-maven-plugin/set-mojo.html , diz explicitamente que essa propriedade deve ser especificada ao processar um projeto agregador.-DprocessAllModules
realmente funciona? Isso não funciona para mim.Se você deseja automatizar totalmente o processo (ou seja, você deseja aumentar o número da versão sem precisar saber qual é o número da versão atual), faça o seguinte:
fonte
-DoldVersion='*'
Você pode consultar o objetivo do release: plugin -update-release do Maven . Ele atualizará a versão dos pais, bem como todos os módulos sob ela.
Atualização: Observe que o acima é o plugin de lançamento. Se você não estiver liberando, convém usar
versions:set
fonte
mvn release:update-versions -DautoVersionSubmodules
funcionou bem para mim, mesmo que eu não esteja liberando :-)Convido você a ler o Maven Book sobre construções de múltiplos módulos (reatores).
Eu quis dizer em particular o seguinte:
deve ser alterado para. Aqui, tome cuidado com a versão não definida apenas na parte pai que está definida.
Este é um link melhor .
fonte
pom.xml
arquivos, mas eu concordo (com @ ThorbjørnRavnAndersen) que ler um livro inteiro para essas informações é um exagero. : pversions:update-child-modules
soa como o que você está procurando. Você pode fazer as versões: defina como mencionado, mas esta é uma maneira leve de atualizar os números de versão pai. Para os módulos filhos, é minha opinião que você remova as<version>
definições, pois elas herdarão o número da versão do módulo pai.fonte
A melhor maneira é que, como você pretende agrupar seus módulos, é possível especificar a
<dependencyManagement>
tag na parte externa mais externapom.xml
(módulo pai) diretamente na<project>
tag. Controla a versão e o nome do grupo. No seu módulo individual, você só precisa especificar a<artifactId>
tag no seupom.xml
. Vai levar a versão do arquivo pai.fonte
a maneira mais fácil é mudar a versão em cada pom.xml para versão arbitrária. verifique se o gerenciamento de dependências usa a versão correta do módulo usado neste módulo! por exemplo, se você deseja aumentar o controle de versão para um projeto de módulo de reboque, deve fazer o seguinte:
no módulo childe:
e no módulo pai:
fonte
Para atualizar a versão principal do pom.xml e pai nos submódulos:
fonte