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.