Hudson-build fail: Nicht auflösbaren parent-POM
Ich verwendet, um arbeiten mit Hudson an meinem Projekt, und in letzter Zeit hatte ich, um es auf einen neuen server.
Ich es konfiguriert die gleiche Art und Weise, es zu verwenden (für alle, die ich sagen kann) aber wenn ich versuche zu starten einen build, es schlägt fehl und ich bekomme folgende Fehlermeldung:
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
Den pom.xml Datei wenn ich Hudson "Arbeitsbereich" sieht so aus:
[...]
<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>
[Bearbeiten]
Tatsächlich habe ich vergessen einige wichtige Informationen:
Mein Projekt ist in 3 Teile unterteilt:
business (verpackt in .jar)
web (verpackt in eine .Krieg)
Ohr (verpackt die .Krieg und .jar in eine .Ohr)
Ich bin mit Subversion, und unter meinem "Stamm" - Ordner habe ich ein "MyProject" Ordner inklusive:
.project
.settings/
business/
ear/
pom.xml
src/
web/
was passiert ist:
in meine Hudson-job-Konfiguration, füllte ich die SVN-Feld "repository URL" mit:
http://[...]/trunk/MyProject/Ohr
und hier ist die "pom.xml" aus "MyProject" - Ordner:
<?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>
[...]
damit die Eltern "pom.xml" tatsächlich befindet sich in "../pom.xml" auf mein SVN-repository unter trunk/MyFolder".
Aber Hudson nicht sehen können es aus irgendeinem Grund (aber wie ich schon sagte, es verwendet, um die Arbeit auf dem vorherigen server).
Keine Ahnung ?
[/Edit]
Ich denke, dies ist ein rookie-Fehler, ich bin ein totaler Anfänger auf Maven, aber ich kann einfach nicht herausfinden, warum es nicht mehr funktioniert ...
Jede Hilfe wird sehr geschätzt !
Nicolas
- So tun, Sie haben nur eine pom-Datei? Sollten Sie zwei, wenn Sie einen Verweis zum parent-pom-Datei. Richtig? Auch nicht, überprüfen Sie das Ziel-Verzeichnis im svn.
- Raminfar: siehe mein edit =)
Du musst angemeldet sein, um einen Kommentar abzugeben.
relativePath
(derparent
) standardmäßig../pom.xml
. Wie es aussieht ist es derzeit nicht gibt. Sie können legen Sie es auf einen leeren Wert setzt, so dass maven lädt diese wie eine Abhängigkeit.Dieser link erläutert diese.
[Edit: basierend auf den änderungen zu der Frage]
Hudson sieht nur den source code im-Ohr-Ordner. Wenn der parent-pom ist in SVN ist es nicht verfügbar, um Hudson. Fehlenden übergeordneten pom war aa Warnung in Maven 2, aber strenge in Maven-3.
Gibt es zwei Möglichkeiten, um dieses Problem zu lösen.
Ist festzulegen, dass die hudson, die url
http://[...]/trunk/MyProject/
. Sie können dann wählen, um zu bauen alle Module oder immer noch entscheiden, bauen diepom.xml
des ear-Projekts allein.Den anderen ist die manuelle Ausführung
mvn install
auf dem hudson-system, so dass der parent-pom bekommt einmal bereitgestellt und danach verwendet von hudson. Dies wird jedoch nicht aktualisiert, wenn das übergeordnete pom ist nachträglich geändert.clean package cargo:redeploy -P integration
aber wenn man versucht zu bauen, habe ich die folgenden:[...] <===[HUDSON REMOTING CAPACITY]===>channel started Finished: ABORTED
. Es ist im Grunde bauen nichts =/mvn install
Methode. Es funktioniert, aber ich weiß nicht, wie die Tatsache, dass die Eltern pom.xml kann nicht aktualisiert werden ... vielen Dank trotzdem !Abrufen der Root-POM von Maven-REPO sollte in der Regel funktionieren die auch (wie du), aber ich würde erwarten, dass Sie noch nicht ausgelöst, das root-pom zum Einbau in das REPO auf dem neuen hudson-site so weit.
Um dies zu vermeiden, verwenden Sie die relativePath-Eigenschaft, z.B. so etwas wie dieses:
in Ihrem
<parent>
tag, das wird Ihnen sagen, maven, mit Blick auf das root-pom in Ihrem Modul-Struktur.[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
Ich hatte das gleiche problem mit Hudson, Sonar-plugin und ein multi-Modul-Maven-Projekt: "Nicht-auflösbaren parent-POM", wenn Hudson versucht zu laufen sonar:sonar. Die Lösung war, geben Sie das Root-POM Lage in der Hudson-job-Konfiguration unter der Sonar-Bereich.
Projekt-Struktur im SVN (jeder ist ein Maven-Projekt mit pom.xml in der Projekt-root):
Habe ich einzelne Hudson-jobs für jedes Projekt, "foo-Eltern", "foo-ui-Modul" und "bar-andere-Modul". Die in Sonar laufen in einem Hudson-job konnte nicht finden, den übergeordneten POM auch wenn der build erfolgreich war bis zu diesem Punkt. Vielleicht ist das Sonar-plugin nicht verwenden die gleiche Maven-Einstellungen wie der rest der Arbeit, da Sie nicht versuchen, sich für die parent-POM von unserer Artifactory repository, auch nicht mit
<relativePath/>
im Projekt POM.Platz für das Root-POM-Einstellung wurde unter der job-Konfiguration -> Sonar -> Erweitert -> Root-POM:
../foo-parent/pom.xml
(habe ich foo-Eltern-Arbeit auf diesem Weg)Schafften wir es, diese Arbeit einfach durch das löschen der entsprechenden pom-Datei, plus eine Art Metadaten-Datei mit einem ähnlichen Namen im selben Ordner, aus dem
.m2/repository/a/b/c
Ordner auf unserem jenkins-server.Erneutes ausführen des jenkins build danach arbeitete gerade fein.
Hoffe, das jemand hilft...