"Sie haben kein SNAPSHOT-Projekt in der Liste der Reaktorprojekte." bei Verwendung des Jenkins Maven Release Plugins

105

Ich verwende SVN, Maven 3.0.3 auf der neuesten Version von Jenkins und dem Maven Release Plugin. Ich versuche, das Maven-Release-Plugin (über Jenkins) zu verwenden, um einen Probelauf durchzuführen, und führe daher die Optionen aus…

Executing Maven:  -B -f /scratch/jenkins/workspace/myproject/myproject/pom.xml -DdevelopmentVersion=53.0.0-SNAPSHOT -DreleaseVersion=52.0.0 -Dusername=***** -Dpassword=********* -DskipTests -P prod -Dresume=false -DdryRun=true release:prepare

Aber der Trockenlauf stirbt mit dem Fehler unten ...

[JENKINS] Archiving /scratch/jenkins/workspace/myproject/myproject/pom.xml to /home/evotext/hudson_home/jobs/myproject/modules/org.mainco.subco$myproject/builds/2013-11-18_16-09-14/archive/org.mainco.subco/myproject/52.0.0/myproject-52.0.0.pom
Waiting for Jenkins to finish collecting data
mavenExecutionResult exceptions not empty
message : Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.0:prepare (default-cli) on project myproject: You don't have a SNAPSHOT project in the reactor projects list.
cause : You don't have a SNAPSHOT project in the reactor projects list.
    Stack trace : 
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal  org.apache.maven.plugins:maven-release-plugin:2.0:prepare (default-cli) on project myproject: You don't have a SNAPSHOT project in the reactor projects list.
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
    at org.jvnet.hudson.maven3.launcher.Maven3Launcher.main(Maven3Launcher.java:117)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchStandard(Launcher.java:329)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:239)
    at org.jvnet.hudson.maven3.agent.Maven3Main.launch(Maven3Main.java:178)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at hudson.maven.Maven3Builder.call(Maven3Builder.java:129)
    at hudson.maven.Maven3Builder.call(Maven3Builder.java:67)
    at hudson.remoting.UserRequest.perform(UserRequest.java:118)
    at hudson.remoting.UserRequest.perform(UserRequest.java:48)
    at hudson.remoting.Request$2.run(Request.java:326)
    at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)
Caused by: org.apache.maven.plugin.MojoFailureException: You don't have a SNAPSHOT project in the reactor projects list.
    at org.apache.maven.plugins.release.PrepareReleaseMojo.prepareRelease(PrepareReleaseMojo.java:219)
    at org.apache.maven.plugins.release.PrepareReleaseMojo.execute(PrepareReleaseMojo.java:181)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
    ... 30 more
Caused by: org.apache.maven.shared.release.ReleaseFailureException: You don't have a SNAPSHOT project in the reactor projects list.
    at org.apache.maven.shared.release.phase.CheckPomPhase.execute(CheckPomPhase.java:111)
    at org.apache.maven.shared.release.phase.CheckPomPhase.simulate(CheckPomPhase.java:123)
    at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:199)
    at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:140)
    at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:103)
    at org.apache.maven.plugins.release.PrepareReleaseMojo.prepareRelease(PrepareReleaseMojo.java:211)
    ... 33 more

Meine SVN-Checkout-Methode ist auf "Immer eine neue Kopie auschecken" eingestellt, und ich habe eine fragliche Snapshot-Version in meinem Snapshot-Repository, jedoch nicht in meinem Release-Repository. Gibt es eine Möglichkeit, die "Reaktorprojektliste" zu erhalten, um mein Snapshot-Repo anzuzeigen?

Bearbeiten: Ich füge das Snippet meines POMs hinzu, in dem das Projekt seine Version erhält - es erbt es von einem Elternteil

    <parent>
            <artifactId>subco</artifactId>
            <groupId>org.mainco.subco</groupId>
            <version>52.0.0</version>
    </parent>
Dave
quelle
2
Was versionist in deinem pom.xml?
MariuszS
Vielleicht kann dies helfen, stackoverflow.com/questions/13513758/…
MariuszS

Antworten:

156

Sie versuchen, ein Artefakt freizugeben, das kein Schnappschuss ist. Das bedeutet, dass die Versionsnummer Ihres Artefakts ungefähr 3.0.3 ist. Diese Versionsnummer impliziert, dass sie bereits veröffentlicht wurde. Sie können keine Veröffentlichung veröffentlichen. Es würde keine Änderungen dazwischen geben und daher keinen Sinn.

Sie sollten nur SNAPSHOT-Versionen veröffentlichen. Das bedeutet, dass Ihre Versionsnummer 3.0.3-SNAPSHOT lautet.

Daniel Kaplan
quelle
1
Ich habe hinzugefügt, wie ich meine Version bekomme - ich erbe sie von einem Eltern-Pom. Wenn ich die Version so ändere, dass sie "-SNAPSHOT" enthält, wird die Fehlermeldung "Ziel org.apache.maven.plugins konnte nicht ausgeführt werden: maven-release-plugin: 2.0: Vorbereitung (Standard-CLI) auf Projekt myproject: Can fehlgeschlagen Projekt wegen nicht freigegebener Abhängigkeiten nicht freigeben "
Dave
@ Dave Ich denke, du musst dem Elternteil auch einen Schnappschuss machen.
Daniel Kaplan
Möglicherweise muss ich eine zweite SO-Frage dazu öffnen, aber der übergeordnete POM hat eine SNAPSHOT-Version, obwohl es sich um "53.0.0-SNAPSHOT" handelt (anstelle dessen, was ich zu erben versuche, 52.0.0-SNAPSHOT). . Bezogen Sie sich auf das Ändern der Version im übergeordneten POM?
Dave
1
Ich denke, die Fehlermeldung ist nicht selbsterklärend, es sei denn, Sie wissen, was "Liste der Reaktorprojekte" bedeutet. Danke für die sehr klare Antwort.
10
Es wäre viel einfacher zu verstehen, wenn sie nur eine Nachricht wie "Sie können keine Version veröffentlichen" hinzufügen würden. Die Meldung lautet "Sie haben kein SNAPSHOT-Projekt in der Liste der Reaktorprojekte." ... Wer wird diese Botschaft jemals so interpretieren, wie sie soll?
seba.wagner
8

Jenkins Arbeitsbereich wird nicht bereinigt oder Sie haben eine FINALVersion im Inneren pom.xml. Jenkins hat eine Check-out-Strategie zum Aufräumen des Arbeitsbereichs.

Mehr: Maven Release Plugin - SNAPSHOT Projekt benötigt

Optionen für die Check-out-Strategie:

  • Emulieren Sie die saubere Prüfung, indem Sie zuerst nicht versionierte / ignorierte Dateien sowie von ignorierte Dateien / Verzeichnisse löschen svn:ignoreund dann ausführen svn update.
  • Überprüfen Sie immer frische Kopie
  • Verwenden Sie svn updateso viel wie möglich mit svn revertvor dem Update
MariuszS
quelle
Was meinst du mit "Jenkins hat Optionen zum Aufräumen des Arbeitsbereichs"? Wo sind diese Optionen? Sprechen Sie über das Arbeitsbereich-Bereinigungs-Plugin für Jenkins?
Dave
Check-out Strategie Optionen
MariuszS
1
Für mich war dies der Fall, nachdem ich Jenkins Arbeitsbereich geräumt hatte, funktionierte es.
Rbhawsar
1

Erhöhen Sie Ihre Project POM-Datei von der zuvor erstellten Codebasis auf eine neue Version.

1.0.1-SNAPSHOT<version>1.0.1-SNAPSHOT</version>

Herr Nsubuga
quelle
0

Das Ändern der Check-out-Strategie in "Emulieren Sie das saubere Check-out, indem Sie zuerst nicht versionierte / ignorierte Dateien löschen und dann das SVN-Update durchführen" hat den Trick für mich getan.

Faentur
quelle