2012-06-29 11 views
16

Actualmente estoy enfrentando el siguiente problema con Maven 3 cuando intento construir el sitio. Apreciaré tu ayuda en esto.POM original no resoluble: al construir el sitio del proyecto Maven 3

mvn sitio limpio

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

En primer lugar aquí es la configuración:

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 

El POM padres:

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

El pom proyecto agregación:

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

El pom de Proyecto 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> 

El pom de Proyecto 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> 

Aquí es la estructura de la carpeta en la que corro "mvn sitio limpio":

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

padre-pom se implementa con éxito al repositorio de NEXUS antes de la ejecución de mvn clean site con el comando siguiente mvn deploy -DaltDeploymentRepository=snapshots::default::http://MyServer:8081/nexus/content/repositories/snapshots

Y finalmente, el problema en sí:

Cuando ejecuto mvn clean site justo después de que la implementación del sitio parent-pom se crea correctamente. Si elimino la carpeta (con su contenido) "my" (contiene el parent-pom) del repositorio local (~/.m2/repository) y luego intento construir el sitio con mvn clean site, aparece el error descrito en el comenzando. En realidad, Maven descarga el parent-pom del NEXUS. He comparado los archivos descargados y los archivos que se han generado después de la implementación y me he dado cuenta de que faltan algunos, por ejemplo maven-metadata-local.xml cerca de la carpeta "0.1-SNAPSHOT".

Así que cuando estoy tratando de ejecutar el trabajo de creación de sitios de Jenkins recibo el error descrito anteriormente, porque el parent-pom no se despliega desde la máquina donde se ejecuta Jenkins.

¿Cómo puedo resolver este problema o lo que hice mal?

Gracias.

+0

Quitaría la entrada relativaPath de sus módulos, porque está vacía por lo que no es necesario. ¿Puede mejorar la imagen con la estructura de carpetas? donde se encuentra su pom padre? Y por qué son el padre pom y el pom de agregación son diferentes? – khmarbaise

+2

obliga a maven a descargar el POM padre del repositorio, en lugar de buscarlo en la estructura. Si lo elimino maven muestra advertencias porque comienza a pensar que el padre está en ../pom.xml, lo que no es cierto. En cuanto a la agregación y la herencia. Está bien tener diferentes POM principales y de agregación. Aquí está el enlace: [Agrupación frente a herencia ] (http://maven.apache.org/pom.html#Inheritance_v) – tgrigoryan

+0

Sé que es posible tener diferentes agregador y pa pero hace que la vida no sea más fácil. – khmarbaise

Respuesta

2

Su problema no se encuentra en sus archivos pom. Cuando construí su aggregation-pom, Maven descargó normalmente el parent-pom del repositorio remoto (después de que lo borré de mi repositorio local).

Prueba esto:

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

Además, usted podría hacer un poco de limpieza:

  • eliminar <relativePath/> de todos ellos
  • eliminar <version>0.1-SNAPSHOT</version> y <groupId>my.com</groupId> de Proja y ProjB (que se heredan del padre)
4

Como se señala en this answer, hay a bug en el complemento del sitio, que solo busca dependencias en lo que cree que es Maven central.

Estoy teniendo el mismo problema en Maven 3.0.4 y el plugin de sitio 3.3. También tengo el problema de que funciona en mi máquina de desarrollo que ejecuta Windows 7, pero no en el servidor CI que ejecuta Jenkins en Debian.

1

Tengo el mismo problema ... funciona en mi MacBook desarrollador, pero falla en mi Jenkins corriendo en RHEL7 cuando se ejecuta mvn site usando maven-site-plugin:3.7. No probé para degradar el plugin del sitio.

Encontré otra solución. El problema en mi caso fue el maven-project-info-reports-plugin especialmente el objetivo dependencies. Si omito el objetivo con -Dmpir.skip=true mi sitio get's generated (sin las dependencias :(informe).

Cuestiones relacionadas