Maven: no se pudo leer el descriptor de artefactos


258

Espero que alguien pueda ayudarme con un problema con el que estoy luchando.

Cuando intento construir mi proyecto desde la terminal me sale este error:

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

El common.test-data-utilsjar es creado por un proyecto separado y compartido entre este y otro proyecto (el otro proyecto tampoco se construye, pero eso se debe a otro problema).

Puedo construir com.morrislgn.merchandising.common:test-data-utilssin problemas, puedo ver la entrada que hace en el .m2repositorio local de mi máquina. También he reindexado mi repositorio en Eclipse.

El POM para mi proyecto tiene esta entrada:

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

Lo que parece ser correcto para mí: el POM tampoco informa ningún error cuando se ve en Eclipse.

¿Alguien puede decirme qué me estoy perdiendo aquí o qué estoy haciendo mal?

Respuestas:


183

Siempre puedes intentar mvn -U clean install

-U fuerza una verificación de versiones actualizadas e instantáneas en repositorios remotos.


40
@MrPhi: Si tiene el complemento m2e, puede usar Maven -> "Actualizar proyecto ...". El siguiente diálogo tendrá una opción para forzar actualizaciones de instantáneas y lanzamientos.
Aaron Digulla

1
@AaronDigulla Es ese cuadro de diálogo el que me está causando el error.
Jeroen

1
Para que esto funcione, debe ejecutar el comando que se encuentra dentro del directorio raíz de su proyecto
Daria

Tuve un problema similar también. Esto realmente ayuda, y además, si está utilizando un repositorio privado de mvn, asegúrese de agregarlo ~/.m2/setting.xmlprimero a su sección espejo y luego, después de ejecutarlo mvn -U clean install, asegúrese de Reimport(haga clic con el botón derecho en el proyecto, luego debajo de la Mavensección inferior hay un Reimportbotón )
JACK ZHANG

1
@TomaszWaszczyk: Sí, lo hay. 1. Windows-show view-> Terminal. 2. Agregue la terminal local 3. cd PomFilePath 4. Ejecute el comando
Vishnu Dahatonde

142

Este problema puede ocurrir si tiene algunos proyectos secundarios que hacen referencia a un pom principal y no lo ha instalado desde el directorio pom principal (ejecutado mvn installdesde el directorio principal). Uno de los proyectos secundarios puede depender de un proyecto hermano y cuando vaya a leer el pom del hermano, fallará con el error mencionado en la pregunta a menos que lo haya instalado desde el directorio pom padre al menos una vez.

Me encontré con este problema al mover un proyecto a una computadora nueva. Tenía la costumbre de ejecutar comandos desde el proyecto hijo y no ejecuté install en el padre.


13
Además, cuando se ejecuta mvn installen padre, también puede agregar -Npara una operación no recursiva. Esto hará que Maven omita todos los módulos (incluido uno que falla) y solo haga un installobjetivo para el padre.
Jacek Prucia

@JacekPrucia es bueno saber que también se debe instalar un artefacto de pom (si tu padre es un pom)
Adrian

@bzuillsmith, ¿por qué necesitarías correr mvn installen el pom padre? ¿No se usaría esto solo para que la dependencia entre hermanos se pueda descargar? Si mvn installresulta que fue al directorio de hermanos y corrió desde allí para que el jar esté en su repositorio local, ¿no logra esto exactamente lo mismo?
user2158382

Han pasado algunos años desde que usé Maven, pero ... Sí, creo que puedes instalar las dependencias entre hermanos una por una. La instalación desde el padre tiende a ser menos trabajo (menos comandos para escribir y ejecutar). Puede haber casos en proyectos grandes en los que no desea que se instalen todos los proyectos secundarios, en cuyo caso necesitaría ejecutarlos individualmente.
bzuillsmith

Mi proyecto como ch-multip-spring \ simple-parent \ simple-model \ pom.xml, hago una instalación limpia desde la carpeta raíz ch-multip-spring (no también de simple-parent), resolvió mi problema de manera similar al título de la publicación.
IcyBrk

104

Tuve el mismo problema con IntelliJ IDEA y lo siguiente funcionó.

  • Ir File
  • Seleccione Settings
  • Seleccione Build, Execution, Deployments
  • Seleccionar Build Toolsdel menú desplegable
  • Seleccionar Mavendel menú desplegable
  • Marque la Always update snapshotscasilla de verificación

captura de pantalla de IntelliJ 2017.2> Preferencias / Configuración> Compilación, ejecución, implementación> Herramientas de compilación> Maven> Actualizar siempre las instantáneas (casilla de verificación)


1
Esto funcionó para mí, pero no entiendo por qué: estaba intentando construir desde la línea de comandos. ¿Había algo en caché de IntelliJ?
goodOldFashioned

¡Trabajó para mí también! No puedo creer lo frustrante que fue esto. ¡Gracias!
Ben Arena

@ goodOldFashioned: esta "actualización siempre" sobrescribió el archivo ... lastUpdated del repositorio local. -U hace lo mismo desde la línea de comandos. Entonces intellij arregló su repositorio local, y luego la línea de comando funcionó nuevamente.
Frischling

Simple y efectivo
Ojonugwa Jude Ochalifu

2
después de navegar en todo el Internet, finalmente, esto funcionó para mí
Khawarizmi

37

Si está utilizando Eclipse, haga clic derecho en su proyecto -> Maven -> Actualizar proyecto . Se abrirá el cuadro de diálogo Actualizar proyecto Maven.

En ese cuadro de diálogo, marque la casilla Forzar actualización de instantáneas / lanzamientos y haga clic en Aceptar . (Consulte la imagen a continuación)

Cuadro de diálogo Actualizar proyecto Maven

¡Esto funcionó para mí!


36

Si está utilizando eclipse, haga clic con el botón derecho en proyecto -> propiedades -> Maven y asegúrese de que no se haga clic en " Resolver dependencias de proyectos de espacio de trabajo ".

Espero que esto ayude.


44
Esto funciona para mi. Pero no entiendo por qué? ¿Alguna explicación detrás de esto?
Anand

1
esto no funcionó para mí, inicialmente faltaron 12 deficiencias, después de hacer esto ahora son 74
user2044822

27

Sé que llego bastante tarde a la conversación, pero también tuve este problema. Creo que el problema era el firewall de mi empresa. Mi solución fue desconectarme de la red, conectarme a nuestra red inalámbrica abierta y luego forzar una actualización a través de Eclipse. Esto resolvió todo.



1
¡Gracias chicos! Funcionó para mí y ahorró mucho tiempo.
dijo Fagan

14

Tuve el mismo problema con eclipse donde la línea de comando de compilación de Maven funcionó bien PERO intente esto

  • ir a .m2 / repositorio y borrar el directorio asociado
  • ejecutar dependencias de actualización de maven en eclipse

El error desaparece ... por qué mi línea de comando mvn funcionó con esos directorios y eclipse .m2eclipse no pudo, no tengo idea y apesta un poco. Mi proyecto ahora está trabajando en eclipse nuevamente.


en una nota al margen, cambiamos a gradle ... mucho más feliz que hormiga y maven ... configuración extremadamente agradable.
Dean Hiller

Ni siquiera estoy seguro de que sea algo relacionado con Eclipse. Tuve el mismo problema con IntelliJ y eliminar los paquetes problemáticos y volver a ejecutar mvn clean installfuncionó
Jay

12

Tuve el mismo problema usando IntelliJ. Resolví haciendo clic derecho en pom.xml> Maven> Reimportar


Sí, como si la vida fuera así de simple. De todos modos, la respuesta @prime funcionó para mí.
Imam Bux

10

Resolví este problema eliminando en las carpetas del repositorio donde se mostraba este error, excepto los archivos .jar y .pom.


También resolví el mismo problema eliminando archivos relacionados en el repositorio local de maven y luego actualicé todo el proyecto.
Ad Infinitum

8

Los problemas de "Error al leer el descriptor de artefactos" generalmente indican un problema con el archivo pom de la dependencia en el repositorio maven. Le sugeriría que verifique dos veces si el nombre del archivo pom es el mismo que el que Maven espera, y también que verifique si el contenido del archivo pom es válido.


1
La comprobación del pom.xml fue útil. Descubrí que tenía la misma dependencia dos veces (error de copiar y pegar). Después de la limpieza, todo estuvo bien.
Adam Boczek

8

Para mí, estaba relacionado con la configuración de "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

Tengo un proyecto

 A/
 |--a1
 |--a2

Ahora hay otro proyecto en nuestra organización.

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

(Cada módulo a1, b1, etc. y los proyectos principales A, B tienen su propio pom.xml según las reglas estándar de padres e hijos)

Ambos proyectos se verifican en mi eclipse local (de SVN). Estoy trabajando activamente en A.

Llegué a saber que hay una buena funcionalidad común (b4) desarrollada en B y que necesitaba usarla.

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

Los desarrolladores de b4 han implementado este módulo b4 como un artefacto en el repositorio de nuestra organización. Incluí la dependencia del POM de mi módulo, es decir, p2.xml de a2. Eclipse descargó el artefacto requerido de repo y pude importar las clases en él.

Ahora comienza el problema ... Necesitaba verificar el código fuente de b4 para algún propósito y como ya tenía B desprotegido en mi eclipse local, lo actualicé desde SVN y desprotegí el módulo b4. También ejecuté pom.xml del módulo b4 con objetivos como clean, package, etc. Después de un tiempo cuando terminé mi codificación, necesitaba crear un JAR de mi módulo a2. ¡Ejecuté "package" en p2.xml y BAM de a2! errores n errores para el módulo a2 .. Estos errores tampoco fueron muy fáciles de usar. Lo único es que había un nombre de b4 seguro en los registros.

Solución: Después de probar muchas soluciones durante muchas horas, ejecuté "mvn -U clean install" desde la consola en la directriz de proyecto de mi B (es decir, en ../codebase/B). Como B es el padre, el comando de instalación limpia se ejecutó para todos los módulos, incluido b4, y se ejecutó correctamente. Después de esto, ejecuté "mvn -U clean install" para mi proyecto principal que es A. ¡Y esto funcionó! El módulo a2 se compiló, instaló (empaquetó más adelante) con éxito.

Aquí el punto importante era si b4 está en su espacio de trabajo, no solo instale b4. Tendrá que limpiar e instalar el B. completo. Llegué a esta solución después de leer la respuesta de Zuill.

EDITAR: Una cosa más aquí para tener en cuenta que si no tuviera el proyecto B desprotegido en el entorno local, este problema podría no haber ocurrido para mí. Tiendo a pensar que esto sucedió porque hice que B revisara en mi espacio de trabajo local.


5

Menciona dos ID de grupo diferentes com.morrislgn.merchandising.commony com.johnlewis.jec.webpim.common. quizá este es el problema.


Buen lugar, no, no es desafortunado. Copié la etiqueta incorrecta del POM XML, esa era la que estaba encima de la etiqueta que necesitaba y no vi lo que había hecho. Ooops! ¡He editado la pregunta para arreglar mi estupidez!
Morrislgn


4

No tuve suerte actualizando a través de eclipse. Tuve que usar mvn clean install -U (que resolvió todo).


10
Gal Bracha respondió esto también. Es mejor votar una respuesta que funcione y agregar comentarios si es necesario.
Brian White, el

4

Para mí, parece haber sido realmente un problema con la dependencia POM.

Lo solucioné utilizando el repositorio virtual jitpack, con el que puede incluir repositorios github en función de su URL en lugar de su propio POM (que parece haber sido erróneo en mi caso).

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

3

Tuve el mismo problema por un tiempo y, a pesar de hacerlo, ¡ mvn -U clean installel problema no se resolvió!

Finalmente resolví el problema eliminando toda la .m2carpeta y luego reinicié mi IDE y el problema desapareció.

Entonces, a veces el problema aumentaría debido a algunas incompatibilidades o problemas en su repositorio local de Maven.


Intenté hacer una resincronización de Maven mientras estaba desconectado, y mangué completamente IntelliJ. Seguí tu consejo, eliminé .m2, ¡y ahora funciona de maravilla! ¡Gracias!
Victor Grazi

3

En nuestro caso, el error apareció debido al cambio de nombre incorrecto de groupId, mientras que algunos de los proyectos en la configuración de Maven de varios módulos hacen referencia a otros.

Teníamos un proyecto agregador ( billing-parent) con dos módulos ( billing-api, billing):

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

El proyecto billingdepende de billing-api. Entonces en su pom.xmltenía:

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

Decidimos cambiar el nombre de groupId de com.company.teama com.company.team.billing. Reemplazamos el valor anterior en los padres pom.xmly en las <parent>secciones de ambos módulos. Pero olvidé actualizar la dependencia anterior. Así que obtuvimos una configuración en la cual el billingproyecto hace referencia a billing-apiartefactos antiguos . Eventualmente, la construcción del billingmódulo no funciona después de un tiempo con el error 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>

a pesar de que el billing-apimódulo se construye sin errores.

Solución 1: cambio de nombre groupIden dependencytambién.

Solución 2: reemplazar groupIdpor la ${project.groupId}propiedad de esta manera:

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

Conclusión. Entonces, mi consejo en caso de que se encuentre con el error en la configuración de varios módulos debería ser: verificar a fondo groupIdy artifactIdlas dependencias de los módulos vecinos.


2

Navegue a través del shell dentro de la carpeta de su proyecto y ejecute el siguiente comando:

mvn -U clean install

Por lo general, esto ya debería resolver su problema.

Si ve un mensaje como este:

No se pudieron resolver las dependencias para el proyecto: guerra: 0.0.1-INSTANTÁNEA: Error al recopilar dependencias en com.sun.jersey: jersey-server: jar: 1.9

Luego ejecuta:

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

seguido por:

mvn -U clean install

nuevamente para finalmente actualizar sus dependencias.

Luego realice la construcción limpia maven:

maven clean install

1

Tuve un problema similar. En mi caso, la versión de testng en mi carpeta .m2 / repositorios estaba dañada, pero cuando la eliminé e hice una actualización de Maven nuevamente, todo funcionó bien.


0

Tuve este problema en eclipse, mvn -U clean installno funcionó, pero al hacer clic derecho en el proyecto y seleccionar Maven-> Actualizar proyecto lo solucioné.


0

Acabo de comenzar a usar STS Eclipse con Maven por primera vez. El proyecto que configuré ya tenía su propia configuración.xml. Si este es el caso, querrás actualizar tu archivo settings.xml en la configuración de ejecución.

  1. haga clic derecho en pom.xml y "Ejecutar como" -> "Ejecutar configuraciones ..."

  2. donde dice "Configuración de usuario", haga clic en el botón Archivo y agregue settings.xml.

  3. Creo que esto es específico para su proyecto, pero mis "Objetivos" están configurados como "instalación limpia" y verifiqué "Omitir pruebas".


0

Este error básicamente dice que maven no pudo leer una cierta dependencia del repositorio local. Puede suceder porque un archivo jar no se descargó correctamente. Por lo tanto, vaya a su repositorio local de Maven y asegúrese de que no haya ningún archivo de extensión .lastUpdated .


0

Esto me ayudó:

Del IDE (Red Hat CodeReady Studio en mi caso).

Windows -> Mostrar vista -> Terminal -> Abrir / Agregar terminal local

Ejecute los comandos de la siguiente manera>

PS cd /pom-file-path/

PS mvn -U clean install


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.