2012-06-29 16 views
16

Ich stehe derzeit mit Maven 3 vor dem folgenden Problem, wenn ich versuche, die Site zu erstellen. Ich werde es schätzen, Ihnen dabei behilflich zu sein.Nicht auflösbares Eltern-POM: Beim Aufbau von Maven 3 Project Site

mvn saubere Seite

.......... 
[INFO] Reactor Summary: 
[INFO] 
[INFO] Project A ......................................... SUCCESS [15.383s] 
[INFO] Project B ......................................... SUCCESS [2.232s] 
[INFO] My Site ........................................... FAILURE [0.105s] 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 24.769s 
[INFO] Finished at: Fri Jun 29 14:26:04 AMT 2012 
[INFO] Final Memory: 18M/150M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-site-plugin:3.1:site (default-site) on project site: SiteToolException: Unable to read local module-POM: 1 problem was encountered while building the effective model for my.com:projA:0.1-SNAPSHOT 
[ERROR] [FATAL] Non-resolvable parent POM: Could not find artifact my.com:parent-pom:pom:0.1-SNAPSHOT and 'parent.relativePath' points at no local POM @ line 12, column 13 
[ERROR] for project my.com:projA:0.1-SNAPSHOT 
............. 

Zuerst ist hier die Konfiguration:

Apache Maven 3.0.4 (r1232337; 2012-01-17 12:44:56+0400) 
Java version: 1.7.0_04, vendor: Oracle Corporation 
Default locale: en_US, platform encoding: UTF-8 
OS name: "mac os x", version: "10.7.4", arch: "x86_64", family: "mac" 
Nexus repository: 2.0.6 

Die Mutter POM:

<modelVersion>4.0.0</modelVersion> 

<name>Parent POM</name> 
<groupId>my.com</groupId> 
<artifactId>parent-pom</artifactId> 
<version>0.1-SNAPSHOT</version> 
<packaging>pom</packaging> 

<build>       
    <pluginManagement> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-site-plugin</artifactId> 
       <version>3.1</version> 
       <configuration> 
        <reportPlugins> 
         <plugin> 
          <groupId>org.apache.maven.plugins</groupId> 
          <artifactId>maven-project-info-reports-plugin</artifactId> 
          <version>2.4</version> 
         </plugin>    
        </reportPlugins> 
       </configuration> 
      </plugin>    
     </plugins> 
    </pluginManagement>  
</build> 

Die Aggregation Projekt pom:

<modelVersion>4.0.0</modelVersion> 

<name>My Site</name> 
<groupId>my.com</groupId> 
<artifactId>site</artifactId> 
<version>0.1-SNAPSHOT</version> 
<packaging>pom</packaging> 

<parent> 
    <groupId>my.com</groupId> 
    <artifactId>parent-pom</artifactId> 
    <version>0.1-SNAPSHOT</version> 
    <relativePath/> 
</parent> 

<modules> 

    <module>projA</module> 
    <module>projB</module> 

</modules> 

Das pom von Projekt A:

<modelVersion>4.0.0</modelVersion> 

<name>Project A</name> 
<groupId>my.com</groupId> 
<artifactId>projA</artifactId> 
<version>0.1-SNAPSHOT</version> 

<parent> 
    <groupId>my.com</groupId> 
    <artifactId>parent-pom</artifactId> 
    <version>0.1-SNAPSHOT</version> 
    <relativePath/>   
</parent> 

Das pom von Projekt B:

4.0.0

<name>Project B</name> 
<groupId>my.com</groupId> 
<artifactId>projB</artifactId> 
<version>0.1-SNAPSHOT</version> 

<parent> 
    <groupId>my.com</groupId> 
    <artifactId>parent-pom</artifactId> 
    <version>0.1-SNAPSHOT</version> 
    <relativePath/>   
</parent> 
Hier

ist die Struktur des Ordners, in dem ich "mvn sauber site" laufen:

./pom.xml (aggregation project) 
./projA/pom.xml (Project A) 
./projB/pom.xml (Project B) 

Eltern-pom erfolgreich NEXUS-Repository bereitgestellt wird vor der Ausführung von mvn clean site mit folgendem Befehl mvn deploy -DaltDeploymentRepository=snapshots::default::http://MyServer:8081/nexus/content/repositories/snapshots

Und schließlich das Problem selbst:

Wenn ich mvn clean site direkt nach der Bereitstellung von Parent-Pom-Site ausgeführt wird, wird erfolgreich erstellt. Wenn ich den Ordner (mit seinem Inhalt) "my" (es enthält das Eltern-Pom) aus dem lokalen Repository (~/.m2/repository) lösche und dann versuche, die Seite mit mvn clean site zu erstellen, bekomme ich den Fehler beschrieben unter Anfang. Eigentlich lädt Maven den Eltern-Pom von der NEXUS herunter. Ich habe die heruntergeladenen Dateien und Dateien, die nach der Bereitstellung generiert wurden, verglichen und festgestellt, dass nur wenige fehlen, zum Beispiel maven-metadata-local.xml in der Nähe des Ordners "0.1-SNAPSHOT".

Also, wenn ich versuche, den Website-Bau-Job von Jenkins auszuführen, erhalte ich den oben beschriebenen Fehler, weil der Eltern-Pom nicht von der Maschine bereitgestellt wird, auf der Jenkins ausgeführt wird.

Wie kann ich auf dieses Problem oder was ich falsch gemacht habe?

Vielen Dank.

+0

Ich würde den relativen Pfadeintrag Ihrer Module entfernen, weil er leer ist, also wird er nicht benötigt. Können Sie das Bild mit der Ordnerstruktur verbessern Wo ist Ihr Eltern Pom und warum sind die Eltern Pom und die Aggregation Pom verschiedene? – khmarbaise

+2

zwingt Maven Eltern POM aus dem Repository herunterladen, anstatt es in der Struktur nachschlagen. Wenn ich es Maven entfernen zeigt Warnungen an, da es zu denken beginnt, dass sich das Elternteil in ../pom.xml befindet, was nicht wahr ist.In Bezug auf die Aggregation und die Vererbung ist es in Ordnung, verschiedene Eltern- und Aggregations-POMs zu haben.Hier ist der Link: [Aggregation vs Vererbung ] (http://maven.apache.org/pom.html#Inheritance_v) – tgrigoryan

+0

Ich weiß, dass es möglich ist, verschiedene Aggregator und pa Miete aber es macht das Leben nicht einfacher. – khmarbaise

Antwort

2

Ihr Problem liegt nicht in Ihren Pom-Dateien. Als ich Ihr Aggregation-Pom erstellt habe, hat Maven normalerweise das Eltern-Pom aus dem Remote-Repo heruntergeladen (nachdem ich es aus meinem lokalen Repo gelöscht habe).

Try this:

mvn -U clean install site dependency:purge-local-repository 

Zusätzlich könnten Sie etwas aufzuräumen tun:

  • <relativePath/> aus allen von ihnen entfernen
  • entfernen <version>0.1-SNAPSHOT</version> und <groupId>my.com</groupId> von projA und ProjB (sie vererbt werden von dem Elternteil)
4

Wie in this answer gezeigt, gibt es im Site-Plugin a bug, das nur nach Abhängigkeiten in dem, was es für Maven Central hält, sucht.

Ich habe das gleiche Problem in Maven 3.0.4 und Site-Plugin 3.3. Ich habe auch das Problem, dass es in meinem Entwicklungscomputer funktioniert, auf dem Windows 7 ausgeführt wird, aber nicht auf dem CI-Server, auf dem Jenkins unter Debian läuft.

1

Ich habe das gleiche Problem ... funktioniert auf meinem Entwickler MacBook, aber scheitert an meinem Jenkins läuft auf RHEL7, wenn mvn site mit maven-site-plugin:3.7 ausgeführt wird. Ich habe nicht getestet, das Site-Plugin herunterzustufen.

Ich fand eine andere Lösung. Das Problem in meinem Fall war die maven-project-info-reports-plugin vor allem das Ziel dependencies. Wenn ich das Ziel mit -Dmpir.skip=true überspringe, wird meine Seite generiert (ohne die Abhängigkeiten :(report).