Suponha que estou fazendo uma compilação completa em meu grande projeto que tem 7 módulos e, no 6º módulo, a compilação falhou porque um teste falhou. Existe alguma maneira de iniciar a construção do ponto em que falhou?
Respostas:
Você pode retomar a compilação do 6º módulo usando -rf
ou --resume-from
:
-rf, --resume-from
Retomar o reator do projeto especificado
Consulte as opções avançadas do reator para obter detalhes.
subproject/subsubproject
como um parâmetro
maven -rf <module name> clean install
mvn -rf :moduleName install
. (Não sei exatamente por que o cólon é necessário, mas parece ser - pelo menos para a minha configuração.)
install
objetivo, porque a continuação da construção pode, então, obter os artefatos que já foram construídos em seu repositório Maven local para resolver dependências deles. Acho que é uma má prática executar install
compilações, pois você acaba entulhando seu repositório local com instantâneos e pode acabar dependendo de um instantâneo mais antigo do que o esperado. Parece que para compilações onde você apenas package
e não install
usa, -rf
não é uma opção: você terá que fazer a compilação inteira.
você pode retomar a compilação de qualquer módulo que desejar usando o -rf
comando. Por exemplo, se sua compilação falhou em myproject-proxy, você pode usar o seguinte comando:
mvn -rf myproject-proxy clean install
olhe o resumo do maven e você verá os módulos executados e onde o maven está parado. então tente isto:
mvn clean install-Dmaven.test.skip=true -rf :yourModule
De acordo com o " What's New in Maven 4 " (novembro de 2020) de Maarten Mulders , em breve você será capaz de, com o próximo Maven 4.0.0 (Q1 2021)
Considere este exemplo de estrutura de projeto:
Use --also-make junto com --resume-from
A primeira melhoria no Reactor é a correção de um bug.
Anteriormente, se a construção do seu projeto falhasse no módulo cliente, você receberia uma dica para retomar a construção--resume-from :client
. Mas se você fizesse isso, a compilação seria interrompida novamente: desta vez porque o Maven não conseguiu encontrar o módulo comum.
Você pode pensar que adicionar--also-make
(ou-am
) resolveria isso, mas não. Este bug de longa data não está mais lá.Se você combinar
--resume-from :client
com--also-make
, o Reactor encontrará todos os módulos em seu projeto e continuará a construção conforme solicitado.
Retomar automaticamente do último ponto de falha
Mas é provável que você não perceba. O problema
--resume-from :client
é que te faz pensar mais do que o necessário.Com o Maven 4, você pode tornar sua vida ainda mais fácil e prática
--resume
, ou-r
resumidamente. Ele retomará automaticamente a construção do módulo que falhou pela última vez .Mas tem mais! Talvez você esteja usando compilações paralelas . Uma sequência de módulos foi construída com sucesso, enquanto a construção de outra sequência de módulos quebrou.
Nesse cenário, o uso-r
irá ignorar os módulos que tiveram sucesso na compilação anterior.A combinação desses dois recursos pode melhorar o tempo de que você precisa para construir seu grande projeto de software empresarial!
Sintaxe: mvn -rf modulename mavengoal ou mvn --resume-from modulename mavengoal
Ex: mvn -rf instalação limpa do módulo de administração ou mvn --resume-from instalação limpa do módulo de administração
-rf
não é abreviação de --remove-from
. É abreviação de--resume-from
Você poderia executar a compilação do módulo 6 separadamente para ver se ainda falha, mas temo que você precise compilar todos os módulos desde o início quando quiser executar a compilação "grande".
Editar: é claro que as compilações subsequentes serão mais rápidas porque o código dos módulos 1-5 já está compilado, a menos que você execute o clean como parte de sua compilação.