java - maven-Cómo resolver este error: "El POM para XXX no es válido"?
dependencies jmock (1)
Estoy construyendo un proyecto simple con maven. No puedo hacer que se construya porque falta una dependencia transitiva, es decir, objenesis 1.0
.
Ejecuto maven en modo de depuración y recibí este mensaje:
[DEBUG] =======================================================================
[WARNING] The POM for org.jmock:jmock-junit4:jar:2.6.0 is invalid, transitive dependencies (if any) will not be available: 1 problem was encountered while building the effective model for org.jmock:jmock-junit4:2.6.0
[ERROR] Invalid packaging for parent POM org.jmock:jmock-parent:2.6.0, must be "pom" but is "jar" @ org.jmock:jmock-parent:2.6.0
...
Cuando miro a jmock-parent no puedo encontrar una referencia al tipo de pom o jar.
¿Cómo puedo resolver este problema?
Nota: Utilizamos el nexo de nuestra empresa para buscar dependencias.
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>Poc</groupId>
<artifactId>Poc</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<maven.compiler.source>1.6</maven.compiler.source>
<maven.compiler.target>1.6</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.jmock</groupId>
<artifactId>jmock-junit4</artifactId>
<version>2.6.0</version>
</dependency>
</dependencies>
</project>
jmock-parent-2.6.0.pom
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>org.jmock</groupId>
<artifactId>jmock-parent</artifactId>
<version>2.6.0</version>
<description>POM was created by Sonatype Nexus</description>
</project>
Parece que la dependencia no se descargó correctamente. Intentaría eliminar el directorio org.jmock de su repositorio M2 local y dejar que Maven intente una nueva descarga de ese contenedor.
Editar : Cuando observa M2_REPO/org/jmock/jmock-parent/2.6.0/jmock-parent-2.6.0.pom
en un editor de texto, ¿dice específicamente <packaging>pom</packaging>
? Es posible que desee asegurarse de que sus dependencias en su repositorio de Nexus también sean correctas. Acabo de retirar la dependencia de Maven Central y no tuve ningún problema.
Edición 2 : es posible que Nexus cree automáticamente un pom padre para ti si no puede descargarlo de Maven Central. ¿Tu instalación de Nexus está configurada para descargar dependencias de Maven Central? ¿ mvn deploy:deploy-file
manualmente mvn deploy:deploy-file
tu jmock-junit4.jar a tu repositorio de Nexus? Estoy seguro de que hay una manera de forzar a Nexus a actualizar ese pom, o puedes desplegar manualmente el pom padre correcto descargándolo de maven central y luego ejecutando el comando mvn deploy
mencionado anteriormente.