Maven: falha ao ler o descritor de artefato


258

Espero que alguém possa me ajudar com um problema com o qual estou lutando.

Quando tento construir meu projeto a partir do terminal, recebo este erro:

Failed to read artifact descriptor for com.morrislgn.merchandising.common:test-data-utils:jar:0.3b-SNAPSHOT: Could not find artifact com.morrislgn.merchandising:merchandising:pom:0.3b-SNAPSHOT

O common.test-data-utilsjar é criado por um projeto separado e compartilhado entre este e outro projeto (o outro projeto também não cria, mas isso se deve a outro problema).

Sou capaz de construir com.morrislgn.merchandising.common:test-data-utilssem problemas, posso ver a entrada que faz no .m2repositório local na minha máquina. Também reindexei meu repositório no Eclipse.

O POM do meu projeto tem esta entrada:

<dependency>
    <groupId>com.morrislgn.merchandising.common</groupId>
    <artifactId>test-data-utils</artifactId>
    <version>0.3b-SNAPSHOT</version>
</dependency>

O que parece estar correto para mim - o POM também não relata erros quando é exibido no Eclipse.

Alguém pode me dizer o que estou perdendo aqui ou fazendo errado?

Respostas:


183

Você sempre pode tentar mvn -U clean install

-U força uma verificação de liberações e capturas instantâneas atualizadas em repositórios remotos.


40
@ MrPhi: Se você possui o plugin m2e, pode usar o Maven -> "Update Project ...". A próxima caixa de diálogo terá uma opção para forçar atualizações de capturas instantâneas e liberações.
Aaron Digulla 13/03

1
@AaronDigulla É a caixa de diálogo que está causando o erro para mim.
Jeroen

1
Para fazer este trabalho você deve executar o comando estar dentro da dir raiz do seu projeto
Daria

Eu tive um problema semelhante também. Isso realmente ajuda e, além disso, se você estiver usando o repositório mvn privado, adicione-o à sua ~/.m2/setting.xmlseção de espelho primeiro e, depois de executar mvn -U clean install, certifique-se de Reimport(clique com o botão direito do mouse no projeto e, na Mavenseção inferior , há um Reimportbotão )
JACK ZHANG #

1
@TomaszWaszczyk: Sim, existe. 1. Windows-show view-> Terminal. 2. Adicione o terminal local 3. cd PomFilePath 4. Execute o comando
Vishnu Dahatonde 22/04/19

142

Esse problema pode ocorrer se você tiver alguns projetos filhos que se referem a um pai pom e você não tiver instalado a partir do diretório pom pai (executado mvn installno diretório pai). Um dos projetos filhos pode depender de um projeto irmão e quando ele ler o pom do irmão, ele falhará com o erro mencionado na pergunta, a menos que você tenha instalado pelo diretório pom pai pelo menos uma vez.

Eu acabei de encontrar esse problema ao mover um projeto para um novo computador. Eu costumava executar comandos do projeto filho e não executava a instalação no pai.


13
Além disso, ao executar mvn installno pai, você também pode adicionar -Noperações não recursivas. Isso fará com que o maven pule todos os módulos (incluindo um que falha) e faça apenas um installobjetivo para o pai.
Jacek Prucia

@JacekPrucia bom saber que um artefato pom também precisa ser instalado (se o seu pai é um pom)
Adrian

@bzuillsmith Por que você precisaria executar mvn installo pom pai? Isso não seria usado apenas para o download da dependência entre irmãos? Se você foi ao diretório de irmãos e executou a mvn installpartir daí para que o jar esteja no seu repositório local, isso não faz exatamente a mesma coisa?
user2158382

Faz alguns anos desde que usei o maven, mas - Sim, acredito que você pode instalar as dependências dos irmãos uma a uma. Instalar a partir do pai tende a ser menos trabalhoso (menos comandos para digitar e executar). Pode haver casos em grandes projetos em que você não deseja que todos os projetos filhos sejam instalados; nesse caso, você precisará executá-los individualmente.
bzuillsmith

Meu projeto, como ch-multip-spring \ simple-parent \ simple-model \ pom.xml, eu faço a instalação limpa do mvn da pasta raiz ch-multip-spring (não da simple-parent também), ele resolveu o problema da mesma maneira para o título da postagem.
IcyBrk

104

Teve o mesmo problema com o IntelliJ IDEA e os seguintes trabalhos.

  • Vamos para File
  • Selecione Settings
  • Selecione Build, Execution, Deployments
  • Selecione Build Toolsno menu suspenso
  • Selecione Mavenno menu suspenso
  • Marque a Always update snapshotscaixa de seleção

captura de tela do IntelliJ 2017.2> Preferências / Configurações> Compilação, Execução, Implantação> Ferramentas de compilação> Maven> Sempre atualizar snapshots (caixa de seleção)


1
Isso funcionou para mim, mas não entendo o porquê - estava tentando construir a partir da linha de comando. Havia algo em cache no IntelliJ?
usar o seguinte código

Trabalhou para mim também! Não posso acreditar como isso foi frustrante. Obrigado!
Ben Arena

@ goodOldFashioned: Esta "atualização sempre" substituiu o arquivo .... lastUpdated do repositório local. -U faz o mesmo na linha de comando. Então, o intellij corrigiu seu repositório local e, em seguida, a linha de comando funcionou novamente.
Frischling


2
depois de navegar toda a internet, finalmente, isso funcionou para mim
khawarizmi

37

Se você estiver usando o Eclipse, clique com o botão direito do mouse em seu Projeto -> Maven -> Atualizar Projeto . Ele abrirá a caixa de diálogo Atualizar projeto Maven.

Nessa caixa de diálogo, marque a caixa de seleção Forçar atualização de snapshots / liberações e clique em OK . (Consulte a imagem abaixo)

Caixa de diálogo Atualizar projeto Maven

Isso funcionou para mim!


36

Se você estiver usando o eclipse, clique com o botão direito do mouse em projeto -> propriedades -> Maven e verifique se a opção " Resolver dependências de projetos da área de trabalho " não está clicada.

Espero que isto ajude.


4
Funciona para mim. Mas eu não entendo o porquê? Alguma explicação por trás disso?
Anand

1
isso não funcionou para mim, inicialmente 12 decencies estavam faltando, depois de fazer isso é 74 agora
user2044822


14

Eu tive o mesmo problema com o eclipse, onde a linha de comando maven build funcionou muito bem, mas tente isso

  • vá para .m2 / repository e limpe o diretório associado
  • executar atualizações dependentes de atualização no eclipse

O erro desaparece .... por que minha linha de comando mvn funcionou com esses diretórios e o eclipse .m2eclipse não pôde, não tenho idéia e meio que é uma merda. Meu projeto agora está trabalhando em eclipse novamente.


em uma nota lateral, nós mudamos para gradle .... muito mais feliz que formiga e maven .... configuração extremamente agradável.
Dean Hiller

Nem tenho certeza se é algo relacionado ao Eclipse. Eu tive o mesmo problema com IntelliJ e excluir os pacotes problemáticos e re-executar mvn clean installtrabalhou
Jay

12

Eu tive o mesmo problema usando o IntelliJ. Resolvi com o botão direito em pom.xml> Maven> Reimport


Sim, como se a vida fosse assim tão simples. De qualquer forma, a resposta @prime funcionou para mim.
Imam Bux

10

Resolvi esse problema excluindo nas pastas do repositório onde esse erro era mostrado em tudo, exceto nos arquivos .jar e .pom.


Também resolvi o mesmo problema, excluindo os arquivos relacionados no repositório local do maven e atualizando todo o projeto.
Ad Infinitum

8

Os problemas "Falha ao ler o descritor de artefato" geralmente indicam um problema com o arquivo pom da dependência no repositório maven. Eu sugiro que você verifique novamente se o nome do arquivo pom é o mesmo que o nome maven espera e também para verificar se o conteúdo do arquivo pom é válido.


1
A verificação do pom.xml foi útil. Descobri que tinha a mesma dependência duas vezes (erro de copiar e colar). Após a limpeza, tudo estava bem.
Adam Boczek 8/03/16

8

Para mim, estava relacionado à configuração do "User Setting.xml" dentro

Window > preferences > Maven > User Settings > and then browsing to the user Settings inside the { maven unarchived directory / }/apache-maven-2.2.1/conf/settings.xml . 

6

Eu tenho um projeto

 A/
 |--a1
 |--a2

Agora há outro projeto em nossa organização

 B/
 |--b1
 |--b2
 |--b3

(Cada módulo a1, b1 etc. e os projetos pai A, B têm seu próprio pom.xml, de acordo com as regras padrão do pai e filho)

Ambos os projetos são verificados no meu eclipse local (do SVN). Estou trabalhando ativamente no A.

Eu vim a saber que existe uma boa funcionalidade comum (b4) desenvolvida em B e eu precisava usá-la.

 B/
 |--b1
 |--b2
 |--b3
 |--b4 (NEW)

O desenvolvedor do b4 implementou este módulo b4 como um artefato no repositório da nossa organização. Incluí a dependência do POM do meu módulo, ou seja, pom.xml do a2. O Eclipse baixou o artefato requerido do repositório e eu poderia importar as classes nele.

Agora o problema começa ... Eu precisava verificar o código-fonte do b4 para alguma finalidade e, como eu já tinha B verificado no meu eclipse local, atualizei-o do SVN e verifiquei o módulo b4. Também executei o pom.xml do módulo b4 com destinos como clean, package etc. Depois de algum tempo em que terminei minha codificação, precisei criar um JAR do meu módulo a2. Eu executei o "pacote" no pom.xml e no BAM do a2 !! erros n erros para o módulo a2. Esses erros também não eram muito amigáveis. A única coisa é que havia o nome do b4 com certeza nos logs.

Solução: Depois de tentar várias soluções por muitas horas, executei "mvn -U clean install" no console na diretiva de projeto do meu B (ou seja, em ../codebase/B). Como B é o pai, o comando clean install foi executado para todos os módulos, incluindo b4, e foi executado com sucesso. Depois disso, executei "mvn -U clean install" para o meu projeto pai, que é A. E isso funcionou! O módulo a2 foi compilado, instalado (empacotado posteriormente) com êxito.

O ponto importante aqui foi que se o b4 estiver no seu espaço de trabalho, não instale apenas o b4. Você precisará instalar a instalação B. completa. Cheguei a esta solução depois de ler a resposta da Zuill

Edição: Mais uma coisa aqui para observar que, se eu não tinha o projeto B check-out no ambiente local, esse problema pode não ter ocorrido para mim. Costumo pensar que isso aconteceu porque eu fiz o check-out do B no meu espaço de trabalho local.


5

Você menciona dois groupIds diferentes com.morrislgn.merchandising.commone com.johnlewis.jec.webpim.common. Talvez este seja o problema.


Bom local - não, não é lamentável. Copiei a tag errada do XML do POM, que estava acima da tag de que eu precisava e não localizou o que havia feito. Opa! Eu editei a pergunta para corrigir minha estupidez!
Morrislgn


4

Não teve sorte ao atualizar via eclipse. Teve que usar o mvn clean install -U (que resolveu tudo).


10
Gal Bracha também respondeu. Melhor votar uma resposta que funcione e adicionar comentários, se necessário.
Brian White

4

Para mim, parece realmente ter sido um problema com a dependência do POM.

Eu trabalhei com isso usando o repositório virtual jitpack, com o qual você pode incluir repositórios do github com base em sua URL, em vez de seu próprio POM (o que parece ter sido errado no meu caso).

    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>

3

Eu tive o mesmo problema por um tempo e apesar de fazer mvn -U clean installo problema não estava sendo resolvido!

Finalmente resolvi o problema excluindo toda a .m2pasta e reiniciei meu IDE e o problema desapareceu!

Portanto, às vezes o problema aumentava devido a algumas incompatibilidades ou problemas no seu repositório maven local.


Tentei fazer uma ressincronização do Maven enquanto estava offline e instalei completamente o IntelliJ. Seguiu o seu conselho, excluiu .m2 e agora está funcionando como um encanto! Obrigado!
Victor Grazi

3

No nosso caso, o erro apareceu devido à renomeação incorreta do groupId, enquanto alguns dos projetos na configuração Maven de vários módulos fazem referência a outros.

Tivemos um projeto agregador ( billing-parent) com dois módulos ( billing-api, billing):

com.company.team:billing-parent
|-com.company.team:billing-api
|-com.company.team:billing

O projeto billingdepende billing-api. Então, no seu pom.xmlteve:

<dependency>
    <groupId>com.company.team</groupId>
    <artifactId>billing-api</artifactId>
    <version>${project.version}</version>
</dependency>

Decidimos renomear groupId de com.company.teampara com.company.team.billing. Substituímos o valor antigo nos pais pom.xmle nas <parent>seções dos dois módulos. Mas esqueceu de atualizar a dependência acima. Portanto, tivemos uma configuração na qual o billingprojeto faz referência a billing-apiartefatos antigos . Eventualmente, ele aumenta a construção do billingmódulo após algum tempo com o erro como

[ERROR] Failed to execute goal on project billing: Could not resolve dependencies for project com.company.team.billing:billing:jar:3.5.1-SNAPSHOT: Failed to collect dependencies at com.company.team:billing-api:jar:3.5.1-SNAPSHOT: Failed to read artifact descriptor for com.company.team:billing-api:jar:3.5.1-SNAPSHOT: Failure to find <parent of the com.company.team:billing-parent project which is not available any more>

Apesar do fato que billing-api módulo ser compilado sem erros.

Solução 1: renomear groupIdemdependency bem.

Solução 2: substitua groupIdpela ${project.groupId}propriedade da seguinte maneira:

<dependency>
    <groupId>${project.groupId}</groupId>
    <artifactId>billing-api</artifactId>
    <version>${project.version}</version>
</dependency>

Conclusão. Portanto, meu conselho, caso você encontre o erro na configuração de vários módulos, deve ser: verifique minuciosamente groupIde artifactIdas dependências dos módulos vizinhos.


2

Navegue pelo shell dentro da pasta do projeto e execute o seguinte comando:

mvn -U clean install

Geralmente isso já deve resolver o seu problema.

Se você vir uma mensagem como esta:

Não foi possível resolver dependências para o projeto: war: 0.0.1-SNAPSHOT: falha ao coletar dependências em com.sun.jersey: jersey-server: jar: 1.9

Em seguida, execute:

export MAVEN_OPTS=-Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2

Seguido por:

mvn -U clean install

novamente para finalmente atualizar suas dependências.

Depois, execute a compilação limpa do maven:

maven clean install

1

Eu tive um problema parecido. No meu caso, a versão do testng na minha pasta .m2 / repositories estava corrompida, mas quando eu a excluí e fiz uma atualização novamente, tudo funcionou bem.


0

Eu tive esse problema no eclipse, mvn -U clean installnão funcionou, mas clique com o botão direito do mouse no projeto e selecione Maven-> Atualizar projeto corrigido.


0

Comecei a usar o STS Eclipse pela primeira vez usando o Maven. O projeto que eu configurei já tinha seu próprio settings.xml. Se for esse o caso, você desejará atualizar seu arquivo settings.xml na configuração de execução.

  1. clique com o botão direito do mouse no pom.xml e em "Executar como" -> "Executar configurações ..."

  2. onde está escrito "Configurações do usuário", clique no botão Arquivo e adicione o settings.xml.

  3. Acho que isso é específico para o seu projeto, mas meus "Objetivos" estão definidos como "instalação limpa" e verifiquei "Ignorar testes".


0

Este erro está basicamente dizendo que o maven não conseguiu ler uma certa dependência do repositório local. Pode acontecer porque um arquivo jar não foi baixado corretamente. Portanto, vá ao seu repositório local maven e verifique se não há nenhum arquivo de extensão .lastUpdated .


0

Isso me ajudou:

Do IDE (Red Hat CodeReady Studio no meu caso).

Windows -> Mostrar Visualização -> Terminal -> Abrir / Adicionar terminal local

Execute comandos da seguinte maneira>

$ cd /pom-file-path/

$ mvn -U clean install


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.