2009-11-05 3 views
7

Ich bin ein Multi-Modul-Projekt mit einer flachen Struktur einrichten, d. H. Eltern und Kind sind im gleichen Basisverzeichnis. Elternteil ist definiert alsKind nicht finden Eltern Pom in flachen strukturierten Multi-Modul 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> 
(...) 

während das Kind es als

definiert
<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> 
(...) 

(Unternehmen und Projektnamen verschleiert)

Was auftritt, ist, dass das Modul (Kind), dass es beschwert kann das Elternteil nicht finden, dh:

Gibt es eine offensichtliche Lösung, die ich übersehen habe, oder ist es nicht ratsam, eine flache Projektstruktur zu verwenden?

Bearbeiten: Ein Tippfehler behoben.

+4

aus irgendeinem Grund las ich den Titel dieses als "Child nicht finden Eltern Porno" ... lol – Jakub

+0

Ich mache diesen Fehler viel. – mikek

+1

Parent verwendet die Version '1-0', während das Kind auf' 1.0' verweist (beachten Sie den Unterschied zwischen dem Strich und dem Punkt) Oder ist das ein weiterer Tippfehler? – Tim

Antwort

13

das <relativePath> Element verwenden, wie in Example 5 der Introduction to the POM beschrieben:

<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

Wenn Sie '' nicht verwenden, geht Maven davon aus, dass der Elternteil eine Verzeichnisebene über dem Kind liegt. – hotshot309

+0

Hehe, eine neue nette Antwort auf den Zähler;) –

0

Der untergeordnete Pom verweist nicht auf den übergeordneten Pom, er verweist auf ein anderes Artefakt namens "build". Es sollte lauten:

<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, tut mir leid ... das war nur eine Verschleierung typo =) Das übergeordnete Projekt heißt 'build' IRL. – mikek

+0

Keine Probleme, was ist mit der Elternversion? Es ist auf 1.0-SNAPSHOT gesetzt, während das Kind eine Version des Elternteils bei 1.7.0-SNAPSHOT referenziert. –

+0

Agh ... gleiche Geschichte. Ich habe diesen Code viel zu lange angeguckt. Wenn ich das elterliche Sans-Kind erstelle, funktioniert alles von da an (weil das Elternteil in meinem lokalen Repo ist), also ist es kein Tippfehler. – mikek

2

Die Mutter POM Version ist 1-0-snapshot, statt 1,0-SNAPSHOT.

+0

Hallo, diese Frage wurde schon lange beantwortet (Und die angenommene Antwort war die selbe wie deine). Sie sollten sich Mühe geben, nicht beantwortet zu werden, und versuchen, etwas Neues ins Gespräch zu bringen. Viel Glück! –

Verwandte Themen