Como forçar a atualização do maven?


731

Importei meu projeto que já estava funcionando em outro computador e ele começou a baixar dependências.

Aparentemente, minha conexão à Internet travou e agora recebo o seguinte:

    >Build errors for comics; org.apache.maven.lifecycle.LifecycleExecutionException:
    Failed to execute goal on project comicsTest: Could not resolve dependencies for project comicsTest:comicsTest:war:0.0.1-SNAPSHOT:
    The following artifacts could not be resolved:
    org.springframework:spring-context:jar:3.0.5.RELEASE,
    org.hibernate:hibernate-entitymanager:jar:3.6.0.Final,
    org.hibernate:hibernate-core:jar:3.6.0.Final,
    org.hibernate:hibernate-commons-annotations:jar:3.2.0.Final,
    org.aspectj:aspectjweaver:jar:1.6.8,
    commons-lang:commons-lang:jar:2.5,

    >mysql:mysql-connector-java:jar:5.1.13: Failure to transfer org.springframework:spring-context:jar:3.0.5.RELEASE from http://repo1.maven.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced.

    >Original error: Could not transfer artifact org.springframework:spring-context:jar:3.0.5.RELEASE from central (http://repo1.maven.org/maven2): No response received after 60000

Como forço o maven a atualizar?


Nota lateral: Eu tive esse problema com o Atlassian Maven (do plugin SDK) e a atualização para a versão mais recente resolveu o problema.
Wirone

Respostas:


1597
mvn clean install -U

-Usignifica forçar atualização de dependências de instantâneo . Dependências de versão não podem ser atualizadas dessa maneira.


32
Eu concordo com o lwpro2, isso também resolveu o meu problema. Apenas fazer o mvn clean não é suficiente. A resposta da Navi não é suficiente para resolver o problema.
R. van Twisk

1
Eu acredito que isso é mais complicado se você estivesse usando artefatos e usasse o ID do repositório "central", porque os metadados aparentemente não são limpos.
Gb667

2
Isso não parece realmente atualizar os jars de dependência de instantâneo, apenas os metadados.
Roddy das ervilhas congeladas

se ele é causado pelo arquivo .lastupdated, gerado a partir do último download dependência sem sucesso, este método não vai funcionar, precisamos de algo como a resposta de Rober Reiz
Junchen Liu

1
Estou procurando a ajuda para versões anteriores e até o maven 2.0.4, a descrição do sinalizador -U era: "-U, - update-snapshots Atualize todos os instantâneos, independentemente das políticas de repositório", começando com 2.0.5, tornou-se: "-U, - update-snapshots Força uma verificação de versões e instantâneos atualizados em repositórios remotos" E tem sido assim desde então. Ambas as versões foram lançadas em 2007. Gostaria de saber se a resposta também deve ser editada para dar conta dos lançamentos?
Cleberz 03/11/19

93

Se o seu repositório local estiver de alguma forma cheio de jarros de liberação, em vez de snapshots ( -Ue --update-snapshotsapenas atualizar snapshots), você poderá limpar o repositório local usando o seguinte:

 mvn dependency:purge-local-repository

Você provavelmente deseja limpar e instalar novamente:

 mvn dependency:purge-local-repository clean install

Muito mais informações disponíveis em https://maven.apache.org/plugins/maven-dependency-plugin/examples/purging-local-repository.html


8
Assim como eu fiz mvn dependency:purge-local-repository, ele simplesmente re-baixado todas as dependências novamente, o que é exatamente o que eu queria
smac89

92

-U parece forçar a atualização de todas as dependências.

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

O exemplo abaixo se para atualização slf4j-api 1.7.1-SNAPSHOT:

rm -rf ~/.m2/repository/org/slf4j/slf4j-api/1.7.1-SNAPSHOT
mvn compile

Isso funciona bem se você estiver usando outra ferramenta que não seja o maven que faça referência ao seu repositório local do maven.
Mansoor Siddiqui

57

Todas as respostas aqui não funcionaram para mim. Eu usei o método do martelo:

find ~/.m2/ -name "*.lastUpdated" | xargs rm

Isso resolveu o problema :-)


1
@ DJ2 Isso exclui todos os arquivos no diretório .m2chamado*.lastUpdated
sjngm

find ~/.m2/ -name "*.lastUpdated" -deletefaria sem o perigo de xargsou rmexceder alguns limites (se muitos arquivos forem encontrados).
A Sz

45

Você pode fazer efetivamente a partir de Eclipse IDE. Claro, se você estiver usando.

Project_Name->Maven->Update Project Configuration->Force Update of Snapshots/Releases

1
Eu fiz a versão da linha de comando na resposta por @ lwpro2, que me permitiu criar na linha de comando , mas ainda não consegui construir no Eclipse. Isso fez com que ele fosse construído através do Eclipse.
Tijolo

Funciona para mim somente se eu fechar e reabrir o Eclipse após executar a atualização.
ceklock

33

Caso alguém queira apenas atualizar as dependências de captura instantânea do projeto e não queira instalar o artefato:

mvn dependency:resolve -U

Não se esqueça de reimportar dependências no seu IDE. No IDEA, você precisa clicar com o botão direito do mouse no arquivo pom e escolher Maven -> Reimportar


13

Se você não tiver certeza do que está dentro do seu repositório local, recomendo iniciar uma compilação com a opção:

-Dmaven.repo.local=localrepo

Dessa forma, você garantirá a construção em um ambiente de sala limpa.


5
esse comando significa usar a pasta localrepo para ser o repositório local. isso é bom para um espaço de trabalho de projeto único, mas ruim se você tiver mais de um projeto e poucos dependem do outro. então o seu melhor de dar um caminho completo como -Dmaven.repo.local = / dados / my / localrepoDir
tgkprog

9

No meu caso, primeiro eu fiz foi:

mvn clean install -U

Ainda estava mostrando o mesmo erro, então fechei o projeto e o reabri novamente. Finalmente funcionou.


Eu acho que você poderia apenas fazer dependências reimportar para evitar reabrir o projeto
GlaIZier

4

Se você estiver usando o eclipse IDE, então:

  • Selecione Projeto.
  • Pressione alt + F5, a janela para o Update Maven Project será exibida.

  • Marque - Forçar atualização de capturas instantâneas / liberações e clique em OK.

Se estiver usando o IDE Intellij

  • vá para configurações / Maven
  • verifique sempre atualizar instantâneos

3

Usei o IntelliJ IDE e tive um problema semelhante. Para solucionar, cliquei em "Gerar fontes e atualizar pastas para todos os projetos" na guia Maven.

insira a descrição da imagem aqui


2

Eu tenho o erro em outro contexto. Portanto, minha solução pode ser útil para outras pessoas que se deparam com a pergunta:

O problema: copiei o repositório local para outro computador, que não tem conexão com um repositório especial. Então, o maven tentou verificar os artefatos no repositório inválido.

Minha solução: Remova os arquivos _maven.repositories.


2

Essa é uma das coisas mais irritantes sobre o Maven. Para mim, acontece o seguinte: Se eu adicionar uma dependência solicitando mais dependências e mais e mais, mas tiver uma conexão lenta, ela será interrompida durante o download e o tempo limite. Embora o tempo limite seja esgotado, todas as dependências ainda não buscadas são marcadas com marcadores de posição no cache .m2 e o Maven não irá (nunca) buscá-lo, a menos que eu remova a entrada do marcador de posição do cache (como indicado anteriormente) removendo-o.

Até onde eu vejo, o Maven ou, mais precisamente, o plug-in do Eclipse Maven tem um bug sobre isso. Alguém deve relatar isso.


2

Você precisa verificar o arquivo settings.xml no <maven_home>/confdiretório


1

Eu tenho o mesmo erro com a dependência android-maps-utils. Usar o pacote do tipo aar na seção de dependência resolve meu problema. Por padrão, o tipo é jar, portanto, pode ser verificado que tipo de dependência no repositório é baixado.


1

Para corrigir esse problema no Eclipse:

1) Adicione a dependência abaixo no Maven pom.xml e salve o arquivo pom.xml.

<!-- https://mvnrepository.com/artifact/com.thoughtworks.xstream/xstream -->
<dependency>
    <groupId>com.thoughtworks.xstream</groupId>
    <artifactId>xstream</artifactId>
    <version>1.3.1</version>
</dependency>

2) Vá para o projeto >> Maven >> Atualizar Projeto

selecione o projeto e clique em OK.

3) Etapa opcional, se não for resolvida até a etapa 2, faça a etapa abaixo depois de executar a etapa 1

Vá para o projeto >> Maven >> Atualizar projeto >> marque a caixa de seleção 'Forçar atualização de snapshots / liberações'

selecione o projeto e clique em OK.


1

As versões anteriores do maven não forçaram a verificação de versões ausentes quando usadas -U com a instalação limpa do mvn, apenas os instantâneos, embora a versão mais recente suporte isso.

Para alguém ainda lutando com a versão anterior, o seguinte pode ser útil:

No Windows:

cd %userprofile%\.m2\repository
for /r %i in (*.lastUpdated) do del %i

No Linux:

find ~/.m2  -name "*.lastUpdated" -exec grep -q "Could not transfer" {} \; -print -exec rm {} \;

Sempre que o maven não puder baixar dependências por qualquer motivo (conectividade / não existe, etc.), ele adicionará o ".error = Não foi possível transferir o artefato" no arquivo dependency-name.lastUpdate na respectiva pasta, no diretório $ home / .m2. A remoção desses arquivos forçará o maven a tentar buscar as dependências novamente.


0

É importante acrescentar que a principal diferença de execução mvn com -U e sem -U é que -Usubstituirá os frascos do SNAPSHOT local pelos frascos do SNAPSHOT remotos.

Frascos INSTANTÂNEOS Locais criados a partir do local mvn installnos casos em que você tem outros módulos do seu proj que geram frascos.


0

-U é usado para forçar a atualização do Repo. Usar

mvn -U clean install

Esta é exatamente a mesma resposta que a resposta aceita. Dado 6 anos antes ...
Kerwin Sneijders

@KerwinSneijders Eu adicionei a resposta 2 anos atrás na época, a resposta aceita não forneceu informações sobre o que -U faz aqui
Sanjeev Guglani

Tanto quanto posso dizer, a resposta aceita incluía essas informações a partir do dia em que foram publicadas. (14 de março de 12). E mesmo que não, essa informação é melhor postada em um comentário abaixo das respostas aceitas, pois não é uma resposta, mas sim informações adicionais
Kerwin Sneijders

0

Eu tentei todas as respostas aqui, mas nada parecia funcionar. Reiniciei meu computador primeiro e depois executei mvn clean install -U. Isso resolveu meu problema.


0

O que o maven faz é baixar todas as dependências do seu projeto no repositório local (pasta .m2). Por causa da Internet causar problemas no seu repositório local, seu projeto está enfrentando problemas. Não tenho certeza se isso certamente o ajudará ou não, mas você pode tentar excluir todos os arquivos na pasta do repositório dentro da pasta .m2. Como não haveria nada no repositório local, o maven seria forçado a baixar as dependências novamente, forçando uma atualização. Geralmente, a pasta .m2 está localizada em c: users: [nome de usuário] :. m2


-1

Eu tive esse problema por um motivo diferente. Fui ao repositório maven https://mvnrepository.com procurando a versão mais recente do spring core, que na época era 5.0.0.M3 / O repositório me mostrou essa entrada para o meu pom.xml:

<!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>5.0.0.M3</version>
</dependency>

Por mais ingênuo que eu sou, presumi que o comentário estava me dizendo que o jar está localizado no repositório padrão.

No entanto, após muitas batidas de cabeça, vi uma nota logo abaixo do xml dizendo "Nota: este artefato está localizado no repositório Alfresco Public ( https://artifacts.alfresco.com/nexus/content/repositories/public/ ) "

Portanto, o comentário no XML é completamente enganador. O frasco está localizado em outro arquivo, e foi por isso que Maven não conseguiu encontrá-lo!


-3

Podemos forçar a atualização mais recente do repositório de release e snapshot com o comando abaixo:

mvn --update-snapshots clean install

12
Esta é exatamente a mesma resposta que a resposta aceita. -U é a forma abreviada de --update-snapshots.
Roddy das ervilhas congeladas

-3

Eu tive o mesmo erro e executar mvn install -Ue, em seguida, funcionar mvn installfuncionou para mim.


10
Por favor, não poste respostas "a coisa mencionada em todas as outras respostas também funcionou para mim" .
Kryger # 17/16

-4

Corri para isso recentemente e executando o seguinte corrigiu todos os problemas

mvn -fae install

5
-fae,--fail-at-end Only fail the build afterwards; allow all non-impacted builds to continueParece uma maneira estranha de fixar dependências não actualizadas externos ..
Donatello

-5

mvn clean install -Unão funciona No entanto mvn -U cleanseguido por mvn clean installfaz.

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.