2009-11-05 9 views
7

Estoy configurando un proyecto de varios módulos con una estructura plana, es decir, padre e hijo están en el mismo directorio base. Padres se define comoNiño que no encuentra el padre principal en el módulo múltiple estructurado plano maven build

<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/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>company</groupId> 
    <artifactId>parent</artifactId> 
    <packaging>pom</packaging> 
    <version>1-0-SNAPSHOT</version> 
    <name>child</name> 
    <modules> 
     <module>../child</module> 
    </modules> 
(...) 

mientras el niño se define como

<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/maven-v4_0_0.xsd"> 
    <parent> 
     <groupId>company</groupId> 
     <artifactId>parent</artifactId> 
     <version>1.0-SNAPSHOT</version> 
</parent> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>company</groupId> 
<artifactId>child/artifactId> 
<packaging>war</packaging> 
<version>1.0-SNAPSHOT</version> 
<name>child</name> 
(...) 

(Compañía y proyectos nombres ofuscado)

lo que está ocurriendo es que el módulo (niño) se queja de que se no se puede encontrar el padre, es decir:

Reason: Cannot find parent: company:child for project: company:child:war:1.0-SNAPSHOT for project company:child:war:1.0-SNAPSHOT 

¿Hay alguna solución obvia para esto que me haya pasado por alto o es una mala idea utilizar una estructura de proyecto plana?

Editar: Se corrigió un error tipográfico.

+4

por alguna razón, leí el título de esto como "Niño no encontrando porno para padres" ... lol – Jakub

+0

Cometí ese error mucho. – mikek

+1

El padre utiliza la versión '1-0', mientras que el hijo se refiere a' 1.0' .. (observe la diferencia entre el guión y el punto) ¿O se trata de otro error tipográfico? – Tim

Respuesta

13

utilizar el elemento <relativePath> como se describe en Example 5 del Introduction to the POM:

<project> 
    <parent> 
    <groupId>company</groupId> 
    <artifactId>parent</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <relativePath>.../parent/pom.xml</relativePath> 
    </parent> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>company</groupId> 
    <artifactId>child</artifactId> 
    <packaging>war</packaging> 
    <version>1.0-SNAPSHOT</version> 
    <name>child</name> 
    ... 
</project> 
+1

Si no se utiliza '', Maven supone que el elemento primario tiene un nivel de directorio por encima del elemento secundario. – hotshot309

+0

Hehe, una nueva respuesta agradable para usted contador;) –

0

El pom hijo no hace referencia al pom padre, hace referencia a otro artefacto llamado 'compilación'. Debe leer:

<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/maven-v4_0_0.xsd"> 
    <parent> 
     <groupId>company</groupId> 
     <artifactId>parent</artifactId> 
     <version>1.0-SNAPSHOT</version> 
</parent> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>company</groupId> 
<artifactId>child</artifactId> 
<packaging>war</packaging> 
<version>1.0-SNAPSHOT</version> 
<name>child</name> 
(...) 
+0

Ah, lo siento ... eso fue solo un error de ofuscación =) El proyecto principal se llama 'compilar' IRL. – mikek

+0

Sin problemas, ¿qué pasa con la versión para padres? Está establecido en 1.0-SNAPSHOT, mientras que el hijo hace referencia a una versión del padre en 1.7.0-SNAPSHOT. –

+0

Agh ... la misma historia. He estado mirando este código por mucho tiempo. Si construyo el hijo padre sin hijos, todo funciona a partir de ese momento (porque el padre está en mi repositorio local), así que no es un problema de tipeo. – mikek

2

La versión POM padre es 1-0-INSTANTÁNEA, en lugar de 1,0-INSTANTÁNEA.

+0

Hola, esta pregunta ha sido respondida durante mucho tiempo (Y la respuesta aceptada fue la misma que su). Debe esforzarse en los que no responden e intente aportar algo nuevo a la conversación. ¡Buena suerte! –

Cuestiones relacionadas