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.

volni
fonte
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

Ali Tokmen
fonte
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;)

Ryan Angilly
fonte
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
Richard
fonte
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.

skyfish
fonte
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

nanosoft
fonte
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.

ArpitBora
fonte
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

coroa
fonte
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.

smac89
fonte
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
Bart den Haak
fonte
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.

Saurabh Oza
fonte
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

Tharindu Sathischandra
fonte
-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)

Abhishek Nandgaonkar
fonte
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

SagaramVijay
fonte
2
Isso pressupõe o uso de algum IDE, uma suposição não suportada pela pergunta, e você nem especificou qual IDE!
Phil