Podemos começar a compilar o maven do ponto em que falhou


91

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:


135

Você pode retomar a compilação do 6º módulo usando -rfou --resume-from:

-rf, --resume-from
          Retomar o reator do projeto especificado

Consulte as opções avançadas do reator para obter detalhes.


Obrigado por isso. Vou tentar
Shekhar

1
isso é bom, para sub-subprojetos, use apenas subproject/subsubprojectcomo um parâmetro
akostadinov

13
Exemplo:maven -rf <module name> clean install
Zoltán,

9
Isso só funcionou para mim quando acrescentei o nome do módulo a dois pontos, por exemplo 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.)
Steve Chambers

3
Parece que isso só funciona se sua construção inicial tiver um installobjetivo, 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 installcompilaçõ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 packagee não installusa, -rfnão é uma opção: você terá que fazer a compilação inteira.
Frans

13

Aqui está o exemplo

mvn clean install -rf :your-module

9

você pode retomar a compilação de qualquer módulo que desejar usando o -rfcomando. Por exemplo, se sua compilação falhou em myproject-proxy, você pode usar o seguinte comando:

mvn -rf myproject-proxy clean install

Eu precisei colocar dois pontos para fazer isso funcionar, por exemplo -rf: seuMódulo Veja as outras respostas.
Gapmeister66

8

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

0

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:

https://maarten.mulders.it/2020/11/whats-new-in-maven-4/example-project_hu981f14f09d98e6139a671549a98c2057_118421_1037x555_resize_box_2.png

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 :clientcom --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 -rresumidamente. 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 -rirá 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!


olá @VonC, estou fazendo uma pergunta fora do tópico. quero saber quais softwares vocês mantêm? Eu vi jira, git, maven etc. na sua página de perfil, você é um colaborador? e como você sabe tanto sobre o git? e você os constrói? estou curioso ...
nikhil swami

1
@nikhilswami Eu mantenho algumas ferramentas que estou usando no trabalho ( github.com/VonC ). E aprendi Git respondendo perguntas no Stack Overflow em 2009. Hoje em dia, estou ativamente apoiando equipes de desenvolvedores usando Git, então continuo aprendendo dessa forma também.
VonC

-1

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


-rfnão é abreviação de --remove-from. É abreviação de--resume-from
Gili

-2

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.


Sim .. Eu sei disso .. Mas eu estava procurando uma maneira de começar a compilar do ponto em que falhou ..
Shekhar
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.