2011-03-02 10 views
7

Solía ​​trabajar con Hudson en mi proyecto, y últimamente tuve que moverlo a un nuevo servidor.Error de compilación de Hudson: POM padre no resoluble

de haberla configurado de la misma manera que solía ser (por lo que yo puedo decir) pero cuando intento poner en marcha una acumulación, se produce un error y me sale el siguiente error:

Démarré par l'utilisateur anonymous 
Checking out http://[...]/trunk/MyProject/ear 
A   .classpath 
A   .project 
A   target 
AU  target/ear-1.0-SNAPSHOT.ear 
A   target/application.xml 
A   target/ear-1.0-SNAPSHOT 
A   target/ear-1.0-SNAPSHOT/META-INF 
A   target/ear-1.0-SNAPSHOT/META-INF/application.xml 
AU  target/ear-1.0-SNAPSHOT/web-1.0-SNAPSHOT.war 
AU  target/ear-1.0-SNAPSHOT/business-1.0-SNAPSHOT.jar 
A   pom.xml 
A   .settings 
A   .settings/org.eclipse.jdt.core.prefs 
A   .settings/org.maven.ide.eclipse.prefs 
At revision 136 
no change for http://[...]/trunk/MyProject/ear since the previous build 
Found mavenVersion 3.0.2 from file jar:file:/usr/share/maven/apache-maven-3.0.2/lib/maven-core-3.0.2.jar!/META-INF/maven/org.apache.maven/maven-core/pom.properties 
Parsing POMs 
ERROR: Echec à la lecture des POMs 
org.apache.maven.project.ProjectBuildingException: Some problems were encountered while processing the POMs: 
[FATAL] Non-resolvable parent POM: Could not find artifact com.rha:MyProject:pom:1.0-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ line 9, column 10 

    at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:325) 
    at hudson.maven.MavenEmbedder.buildProjects(MavenEmbedder.java:360) 
    at hudson.maven.MavenEmbedder.readProjects(MavenEmbedder.java:330) 
    at hudson.maven.MavenModuleSetBuild$PomParser.invoke(MavenModuleSetBuild.java:1148) 
    at hudson.maven.MavenModuleSetBuild$PomParser.invoke(MavenModuleSetBuild.java:991) 
    at hudson.FilePath.act(FilePath.java:756) 
    at hudson.FilePath.act(FilePath.java:738) 
    at hudson.maven.MavenModuleSetBuild$RunnerImpl.parsePoms(MavenModuleSetBuild.java:698) 
    at hudson.maven.MavenModuleSetBuild$RunnerImpl.doRun(MavenModuleSetBuild.java:531) 
    at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:420) 
    at hudson.model.Run.run(Run.java:1362) 
    at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:405) 
    at hudson.model.ResourceController.execute(ResourceController.java:88) 
    at hudson.model.Executor.run(Executor.java:145) 
Finished: FAILURE 

El pom. archivo XML cuando llegué a Hudson "espacio de trabajo" es el siguiente:

[...]

<parent> 
     <groupId>com.rha</groupId> 
     <artifactId>MyProject</artifactId> 
     <version>1.0-SNAPSHOT</version> 
    </parent> 

[...]

<dependencies> 
     <dependency> 
      <groupId>com.rha</groupId> 
      <artifactId>business</artifactId> 
      <version>1.0-SNAPSHOT</version> 
      <type>ejb</type> 
     </dependency> 
     <dependency> 
      <groupId>com.rha</groupId> 
      <artifactId>web</artifactId> 
      <version>1.0-SNAPSHOT</version> 
      <type>war</type> 
     </dependency> 
    </dependencies> 

</project> 

[Editar]

En realidad, yo olvidó algunas informaciones importantes:

Mi proyecto se divide en 3 partes:

negocio (empaquetado en .jar) web (envasados ​​en una .war) ear (empaqueté el .war y .jar en un .ear)

Estoy usando Subversion, y bajo mi carpeta "trunk" obtuve un "My Proyecto "carpeta incluyendo:

.project 
.settings/ 
business/ 
ear/ 
pom.xml 
src/ 
web/ 

lo que ocurre es:

en mi configuración del trabajo de Hudson, que llenó el campo de SVN "URL del repositorio" con:

http://[...]/trunk/MyProject/ear

y aquí está el" pom .xml "de "MiProyecto" carpeta:

<?xml version="1.0" encoding="UTF-8"?> 
<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 

[...] 
    <modules> 
     <module>business</module> 
     <module>web</module> 
     <module>ear</module> 
    </modules> 
[...] 

por lo que el padre "pom.xml" en realidad se encuentra en" ../pom.x ml "en mi repositorio SVN, en" trunk/MyFolder ".

Pero Hudson no puede verlo por alguna razón (pero como he dicho, solía funcionar en el servidor anterior).

¿Alguna pista?

[/ editar]

supongo que esto es un error de novato, soy un principiante en Maven, pero simplemente no puedo entender por qué no está funcionando más ...

¡Cualquier ayuda será muy apreciada!

Nicolas

+0

¿Entonces solo tiene un archivo pom? Deberías tener dos si tienes una referencia al archivo padre principal. ¿Derecha? Tampoco revise el directorio de destino en svn. –

+0

@Amir Raminfar: ver mi edición =) – Nicolas

Respuesta

16

relativePath (del parent) se predetermina a ../pom.xml. Parece que no está presente allí. Podría establecerlo en un valor vacío para que Maven lo descargue como una dependencia.

<relativePath/> 

This link analiza esto.

[Editar: basado en las modificaciones a la pregunta]

Hudson sólo ve el código fuente dentro de la carpeta del oído. Aunque el padre pom está presente en SVN, no está disponible para Hudson. El pom padre ausente fue una advertencia en Maven 2 pero strict en Maven 3.

Hay dos formas de solucionar esto.

Una es para especificar a hudson, la url http://[...]/trunk/MyProject/. A continuación, puede optar por crear todos los módulos o aún optar por construir el pom.xml solo del proyecto ear.

La otra es ejecutar manualmente mvn install en el sistema hudson para que el pom padre se despliegue una vez y luego lo use hudson. Sin embargo, esto no se actualizará si parent pom se cambia posteriormente.

+0

@Nicolas. Respuesta actualizada basada en la edición. – Raghuram

+0

¡Muchas gracias por la respuesta! Cambio la URL a 'http: // [...]/trunk/MyProject /' así que ahora puedo ver 3 módulos. Fui al módulo "ear" y configuré el objetivo de Maven para 'limpiar la carga del paquete: volver a implementar -P-integration' pero cuando intento construir, obtuve lo siguiente:' [...] <=== [HUDSON REMOTING CAPACITY] = ==> canal iniciado Terminado: ABORTED'. Básicamente, no compila nada =/ – Nicolas

+1

Finalmente fui por el método 'mvn install'. Funciona, pero no me gusta el hecho de que el padre pom.xml no se puede actualizar ... ¡muchas gracias de todos modos! – Nicolas

4

Recuperando la Raíz-POM de Maven-REPO normalmente debe también trabajar (como lo hace), pero yo esperaría que havn't activó la raíz del pom para ser instalado en el REPO en el nuevo el sitio de Hudson hasta el momento.

Para evitar esto, use la propiedad relativePath, p.algo como esto:

<relativePath>../pom.xml</relativePath> 

en su etiqueta <parent> que le dirá experto a buscar la raíz del pom en su estructura de módulo.

+0

Lo probé, y todavía tengo un error: '[FATAL] POM padre no resoluble: No se pudo encontrar el artefacto com.rha: MyProject: pom: 1.0-SNAPSHOT y 'parent .relativePath 'apunta a POM local incorrecto @ línea 9, columna 10' – Nicolas

+0

Como dice el mensaje de error: la propiedad relativePath está configurada en una ruta incorrecta, p. si su pom está en/home/test/project/moduleA y su raíz pom está en/home/test/project/entonces agrega "../pom.xml" como se mencionó anteriormente. – HefferWolf

1

Tuve el mismo problema con Hudson, el complemento Sonar y un proyecto Maven de varios módulos: "POM padre no resoluble" cuando Hudson intentó ejecutar el sonar: sonar. La solución fue especificar la ubicación de Root POM en la configuración de trabajo de Hudson en la sección de Sonar.

La estructura del proyecto en el SVN (cada uno es un proyecto Maven con pom.xml en la raíz del proyecto):

foo-parent 
    +- foo-ui-module 
    +- bar-other-module 

tengo puestos de trabajo individuales para cada proyecto Hudson, "foo-padres", "foo -ui-module "y" bar-other-module ". El Sonar ejecutado en un trabajo de Hudson no pudo encontrar el POM padre a pesar de que la compilación tuvo éxito hasta ese momento. Tal vez el complemento Sonar no use la misma configuración de Maven que el resto del trabajo porque no intentó buscar el POM padre de nuestro repositorio de Artifactory, ni siquiera con <relativePath/> en el POM del proyecto.

El lugar para el ajuste de la raíz POM estaba bajo Configuración del trabajo -> Sonda -> Avanzado -> POM Raíz: ../foo-parent/pom.xml (He trabajo foo-padres en este camino)

0

Hemos logrado conseguir este trabajo por simplemente borrando el archivo pom relevante, más algún tipo de archivo de metadatos con un nombre similar en la misma carpeta, desde la carpeta .m2/repository/a/b/c en nuestro servidor jenkins.

Volver a ejecutar el build de jenkins después de hacer esto funcionó bien.

Espero que esto ayude a alguien ...

Cuestiones relacionadas