Maven: POM principal no resoluble

102

Tengo mi proyecto de maven configurado como 1 proyectos de shell y 4 módulos secundarios. Cuando intento construir el shell. Yo obtengo:

[INFO] Scanning for projects...
[ERROR] The build could not read 1 project -> [Help 1]
[ERROR]   
[ERROR] The project module1:1.0_A0 (C:\module1\pom.xml) has 1 error
[ERROR] Non-resolvable parent POM: Failure to find shell:pom:1.0_A0 in http://nyhub1.ny.ssmb.com:8081/nexus/content/repositories/JBoss/ was cached in the local repository, resolution will not be reattempted until the update interval of jboss has elapsed or updates are forced and 'parent.relativePath' points at wrong local POM @ line 5, column 11 -> [Help 2]

Si trato de construir un módulo solitario, obtengo el mismo error, solo reemplace module1, con el módulo que sea.

Haga que todos hagan referencia al padre en sus pompones.

<parent>
    <artifactId>shell</artifactId>
    <groupId>converter</groupId>
    <version>1.0_A0</version>
</parent>

Aquí están las partes relevantes del shell pom:

<groupId>converter</groupId>
<artifactId>shell</artifactId>
<version>1.0_A0</version>
<packaging>pom</packaging>
<name>shell</name>


<modules>
    <module>module1</module>
    <module>module2</module>
    <module>module3</module>
    <module>module4</module>
</modules>
Será
fuente
1
si alguien está interesado, agregar <relativePath>..</relativePath>debajo <parent></parent>funcionó para mí.
kaptan
2
ejecutar estomvn install -N & mvn install
Se Song
La ruta relativa es para proyectos no conformes, no una "solución" cuando la expectativa es que un pom en la carpeta principal del módulo debería ser accesible.
Rick O'Shea
En mi caso, fue debido al error de escritura en el archivo pom.xml.
Oleksii Kyslytsyn
Todos los problemas posibles resumidos: stackoverflow.com/a/62704660/6172857
Sumit Badsara

Respuestas:

94

Solo para referencia.

Las alegrías de Maven.

Poner la ruta relativa de los módulos a ../pom.xml lo solucionó.

El parentelemento tiene un relativePathelemento que debe apuntar al directorio del padre. Por defecto es..

Será
fuente
17
Si. El uso de Maven requiere que sepa lo que hace, la prueba y el error no lo llevarán muy lejos. Por otro lado, hay varias buenas referencias disponibles. Este es uno .
Nicola Musatti
6
¿Así que agregaste esto <relativePath>..</relativePath>debajo <parent></parent>?
Octavio
Gracias lo probé durante un tiempo para solucionar el problema. Tomé el camino relativo de ../pom.xmla ../<parent folder>/pom.xml.
Mario Kurzweil
Poner <relativePath> no resolvería necesariamente el problema si está apuntando a un repositorio privado. Busque la respuesta de Tomáš Záluský para obtener una explicación detallada.
Gi1ber7
Estoy tratando de extender mi archivo pom principal a otro (para pruebas) en el mismo directorio (mismo proyecto). Pero esto no resuelve este error. ¿Alguna idea de cómo arreglarlo?
Praneeth Peiris
39

También se puede solucionar poniendo el settings.xmlarchivo correcto en el ~/.m2/directorio.

usuario1747134
fuente
3
Exactamente eso resolvió mi problema, gracias !!! Pero no colocándolo en algún directorio, sino apuntándolo a Eclipse en Preferencias - Maven - Configuración de usuario.
Brain
También resolvió mi problema. Solo tienes que asegurarte de que la configuración también esté configurada correctamente maven.repo..
Saran
21

La razón alternativa también podría ser que el artefacto padre proviene de un repositorio al que no se puede acceder pom.xml, normalmente un repositorio privado. La solución fue proporcionar ese repositorio en pom.xml:

<repositories>
    <repository>
        <id>internal-repo</id>
        <name>internal repository</name>
        <url>https://my/private/repo</url>
        <layout>default</layout>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>

En mi caso, el problema fue aún más complicado debido a Eclipse: el repositorio estaba activo solo en el perfil especial ( <profiles><profile><id>activate-private-repo</id><repositories>...) y la GUI de Maven en Eclipse no permitía configurar este perfil a través del Ctrl+Alt+Pacceso directo.

La solución fue declarar temporalmente el repositorio fuera del perfil (incondicionalmente), lanzar Alt+F5Maven Update Project, activar el perfil y volver a poner la declaración del repositorio en el perfil. Esto es más bien un error de Eclipse, no un error de Maven.

Tomáš Záluský
fuente
¡Misma situación! Repo privado no agregado al pom.
LoranceChen
4

POM principal no resoluble: esto significa que no puede resolver el repositorio principal.

Trun en modo de depuración:

[DEBUG] Reading global settings from **/usr/local/Cellar/maven/3.5.4/libexec/conf/settings.xml**
[DEBUG] **Reading user settings from /Users/username/.m2/settings.xml**
[DEBUG] Reading global toolchains from /usr/local/Cellar/maven/3.5.4/libexec/conf/toolchains.xml
[DEBUG] Reading user toolchains from /Users/username/.m2/toolchains.xml
[DEBUG] Using local repository at /Users/username/.m2/repository
[DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10.0 for /Users/username/.m2/repository
[INFO] Scanning for projects...
[ERROR] [ERROR] Some problems were encountered while processing the POMs:

Porque el repositorio principal no forma parte de maven central. La solución es especificar un setting.xml en ~ m2 / para ayudar a obtener el POM principal. /Usuarios/nombredeusuario/.m2/settings.xml

En ese XML, es posible que deba especificar la información del repositorio.

Wu Yongchao
fuente
Increíble ! Agregar los detalles de mi repositorio en la configuración xml funcionó. Pero, ¿por qué no está tomando del pom xml (que tiene el mismo repositorio agregado)?
smilyface
3

Simplemente agregue <relativePath />para que el padre en pom se vea así:

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.4.RELEASE</version>
        <relativePath />
    </parent>
stakowerflol
fuente
2
Esto solo se aplica cuando el padre no está en la misma estructura de directorio, es decir, en un repositorio remoto.
Ondra Žižka
2

verificar si tiene valores correctos en los POM secundarios

GroupId
ArtefactId
Version

En Eclipse, por ejemplo, puede buscarlo: Eclipse: buscar pom principal

caña
fuente
2

<relativePath>

Si construye bajo un proyecto secundario, entonces <relativePath>puede ayudarlo a resolver el error pom principal.

instalar padre pom

Pero si crea el proyecto hijo a partir de su carpeta, <relativePath>no funciona. installPrimero puede colocar el pom principal en su repositorio local y luego construir el proyecto secundario.

Halcón
fuente
1

Reemplaza 1.0_A0 con $ {project.version}

Ejecute mvn una vez. Esto descargará todos los repositorios necesarios. Puede volver a 1.0_A0 después de este paso.

Prasanth Pennepalli
fuente
Esto solo funciona si el POM principal requerido tiene la misma versión que el POM del submódulo. Este no es siempre el caso.
Gerold Broser
0

Tuve un problema similar en mi trabajo.

La construcción del proyecto principal sin dependencia creó el archivo parent_project.pom en la carpeta .m2.

Luego agregue el módulo secundario en el POM principal y ejecute la compilación de Maven.

<modules>
    <module>module1</module>
    <module>module2</module>
    <module>module3</module>
    <module>module4</module>
</modules>
Prabhu
fuente
0

Agregar una dependencia en

pom.xml:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.8.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<dependency>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.4.3</version>
</dependency>
Siva
fuente
0

Resolví ese problema en mí después de un intento muy largo, creé otro archivo llamado "parent_pom.xml" en el directorio de archivos del módulo secundario en local y pegué el contenido de parent_pom.xml, que se encuentra en remoto, al recién creado "parent_pom.xml ". Me funcionó y el mensaje de error desapareció.

Ozan Apaydın
fuente
0

Dentro de la etiqueta de ruta relativa, haga lo siguiente

<relative>{project_name}/pom.xml</relative>

y luego RunAs-> Maven build

Funcionó para mí.

Sanket Dhumal
fuente
-2

Tuve el problema de que dos archivos pom.xml de construcción de reactor tenían el mismo artefactId.

benez
fuente
En mi caso, este módulo principal no estaba en la carpeta principal, tuve que agregar el módulo secundario <relativePath>
../parent-module-dir