2011-09-30 15 views
42

Tengo mi proyecto maven configurado como 1 shell projects y 4 children modules. Cuando intento construir el caparazón Obtengo:Maven: POM padre no resoluble

[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 intento construir un módulo en solitario, obtengo el mismo error, solo reemplazo el módulo1, con el módulo que sea.

Pídales que hagan referencia a los padres en sus poms.

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

aquí es las partes pertinentes de la pom shell:

<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> 

Respuesta

50

Sólo como referencia.

Las alegrías de Maven.

Poniendo la ruta relativa de los módulos a ../pom.xml lo resolvió.

El elemento parent tiene un elemento relativePath que debe señalar al directorio del elemento primario. De manera predeterminada, es ..

+11

Sí.Usar Maven requiere que sepas lo que haces, la prueba y el error no te llevarán muy lejos. Por otro lado, hay varias buenas referencias disponibles. Este es [uno] (http://www.sonatype.com/books/mvnref-book/reference/). –

+0

Entonces, usted agregó este ' ..' bajo ''? – octavian

+0

Lo señalé a mi valor relativo de Path el valor predeterminado que Maven pone allí es ... – Will

6

La razón alternativa también puede ser que el artefacto principal provenga del repositorio al que no se puede acceder desde pom.xml, normalmente un repositorio privado. La solución era 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 es aún más complicada debido a Eclipse: el repositorio estaba activo sólo en perfil especial (<profiles><profile><id>activate-private-repo</id><repositories>...) y Maven en Eclipse GUI no permitió para establecer este perfil a través del atajo Ctrl+Alt+P.

La solución fue declarar temporalmente el repositorio fuera del perfil (incondicionalmente), iniciar Alt+F5 Maven 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.

+0

¡La misma situación! Repo privado no agregado al pom. – LoranceChen

10

También se puede arreglar poniendo el archivo settings.xml correcto en el directorio ~/.m2/.

+1

¡¡Exactamente eso resolvió mi problema, gracias !!! Pero no poniéndolo en algún directorio, sino apuntándolo a Eclipse en Preferencias - Maven - Configuración de usuario. – Brain

1

compruebe si tiene valores correctos en los POM niño

GroupId 
ArtefactId 
Version 

En Eclipse, por ejemplo, puede buscar por ella: Eclipse: search parent pom

0

Reemplazar 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.

+0

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. –

0

Tuve un problema similar en mi trabajo.

Creando el proyecto principal sin la dependencia creado parent_project.pom archivo en la carpeta .m2.

A continuación, 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> 
Cuestiones relacionadas