Forçar o download novamente da dependência de versão usando o Maven


136

Estou trabalhando em um projeto com dependência X. X, por sua vez, depende de Y.

Eu costumava incluir Y explicitamente no pom do meu projeto. No entanto, não foi usado e, para tornar as coisas mais limpas, adicionei-o ao pom do X como uma dependência. X está marcado como uma dependência de liberação.

O problema é que, depois de remover Y do pom do meu projeto e adicioná-lo ao pom do X, meu projeto não está sendo aceito mvn -U clean package. Eu sei -U atualizar snapshots, mas não lançamentos.

Portanto, sem excluir o diretório ~ / .m2 / repository, como forçar um novo download do pom do X? Além disso, tentei correr dependency:purge-local-repositorye também não funcionou.


Você marcou as perguntas como "maven-2". A opção -U foi adicionada no Maven 3 para resolver esse problema. Eu sugiro atualizar.
— Mark O'Connor

Apenas da perspectiva da metodologia, se você mudar Xo pom, ele deverá constituir uma nova versão, mesmo que seja apenas uma alteração no número do patch: 1.3-> 1.3.1. Portanto, isso eliminaria esse problema desde o início.
— jpaugh

No entanto, ainda é possível ter problemas semelhantes com os instantâneos, por isso é bom ter algumas respostas.
— jpaugh

Respostas:


166

Você não pode fazer o Maven baixar novamente as dependências, mas o que você pode fazer é limpar as dependências que foram baixadas incorretamente usando mvn dependency:purge-local-repository

Consulte: http://maven.apache.org/plugins/maven-dependency-plugin/purge-local-repository-mojo.html


11
Não é o mesmo tipo de coisa?
— Svish 18/03/2013

2
Não requer acesso ao sistema de arquivos, o que pode ser um problema se você estiver apenas configurando tarefas de criação (para um sistema de IC, por exemplo).
— Oliver Drotbohm

2
Se vários projetos forem executados mvn dependency:purge-local-repository clean package, pode ser que um projeto exclua a mesma dependência no repositório local enquanto outro projeto estiver executando a compilação. Como evitar?
— vikyd

55

Acabei de excluir meu ~ / .m2 / repositório e isso forçou um novo download;)


1
Ajuda como último recurso, tive um projeto em que eclipse e maven estavam um pouco "confusos". A simples exclusão da pasta .m2 fez o projeto compilar e executar corretamente.
— 28414 Leonardo

5
Também é possível excluir seletivamente as dependências que você sabe que precisam ser atualizadas de dentro do repositório. Uma limpeza manual, se você preferir.
— jpaugh

41

Eu acho que o seguinte comando pode ajudá-lo!


mvn -U clean install

4
liberar dependência usando o Maven na pergunta. Não, isso poderia ter sido melhor um comentário.
— Naman

31

Graças à resposta de Ali Tokmen. Consegui forçar a exclusão da dependência local específica com o seguinte comando:

mvn dependency:purge-local-repository -DmanualInclude=com.skyfish:utils

Com isso, ele remove utilsdo meu .m2 / repository e sempre baixa novamente a utilsdependência do JAR quando executo mvn clean install.


1
Eu simplesmente precisava de uma maneira de forçar o maven a baixar novamente uma dependência. Esta é a única resposta que realmente faz isso, enquanto outras respostas sugerem remover tudo. Obrigado
— smac89

14

Projete com o botão direito do mouse-> Maven -> Atualizar projeto e marque as caixas de seleção como na captura de tela. Ele também atualizará lançamentos :)

insira a descrição da imagem aqui


5
Seria bom saber como eles implementaram essa parte "/ Releases".
— Ulises Layera

Obrigado por isso exatamente o que eu precisava.
— precisa saber é

12
mvn clean install -U

-U significa forçar atualização de dependências.

Se você deseja atualizar uma única dependência sem limpeza ou -U, basta removê-la do seu repositório local e compilar.


Novamente, isso apenas baixa novamente as dependências do INSTANTÂNEO.
— Zardoz89 27/03

6

Quando você o adicionou ao X, deveria ter incrementado o número da versão do X, ou seja, X-1.2. O
X-1.2 deveria ter sido instalado / implementado e você deve ter alterado a dependência de seus projetos no X para ser dependente da nova versão X-1.2


6

Se você conhece o ID do grupo X, pode usar este comando para fazer o download novamente de todos Xe de suas dependências

mvn clean dependency:purge-local-repository -DresolutionFuzziness=org.id.of.x

Ele faz o mesmo que as outras respostas que propõem o uso dependency:purge-local-repository, mas apenas exclui e baixa novamente tudo relacionado a X.


4

Se você realmente deseja fazer o download forçado de todas as dependências, pode tentar reinicializar todo o repositório maven. Como neste artigo já descrito, você pode usar:

mvn -Dmaven.repo.local=$HOME/.my/other/repository clean install

3

Apenas exclua ~ / .m2 / repository ..... / caminho_real onde o LOC inválido está chegando, pois força o download novamente dos arquivos jar excluídos. Não exclua toda a pasta do repositório, exclua a pasta específica de onde o erro está ocorrendo.


0

Excluir o ~/.m2/repositoryresolverá o seu problema. Mas, se você ainda precisar manter o antigo, ~/.m2/repositorybasta alterar temporariamente o caminho local do maven.

Se você estiver trabalhando no IntelliJ, vá para Configurações do Maven e altere o caminho do Repositório Local para outro lugar. Pode ser necessário marcar a caixa de seleção de substituição próxima.

insira a descrição da imagem aqui


-1

A maioria das respostas fornecidas acima resolveria o problema.

Mas se você usa o IntelliJ e deseja corrigi-lo automaticamente, vá para Configurações do Maven.

Compilação, Execução, Implantação -> Ferramentas de compilação -> Maven

insira a descrição da imagem aqui

Desativar trabalho offline

Ativar Sempre atualizar instantâneos (alterne quando necessário)


1
Eu apreciaria se você também pode compartilhar o motivo do voto negativo enquanto está nisso. Obrigado.
— Abhishek Nandgaonkar

1
Presumivelmente, como os instantâneos não são liberados, isso não resolve o problema.
— soru

-2

Vá para o caminho da construção ... exclua a biblioteca do maven existente u adicionada ... clique em adicionar biblioteca ... clique nas dependências gerenciadas do maven ... depois clique nas configurações do projeto do maven ... marque a caixa de seleção resolver dependências do maven ... vai baixar tudo dependências maven


2
Isso pressupõe o uso de algum IDE, uma suposição não suportada pela pergunta, e você nem especificou qual IDE!
— Phil
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.