"No tienes un proyecto SNAPSHOT en la lista de proyectos de reactores". al usar el complemento de lanzamiento de Jenkins Maven

105

Estoy usando SVN, Maven 3.0.3 en la última versión de Jenkins y el complemento Maven Release. Estoy tratando de usar el complemento de lanzamiento de Maven (a través de Jenkins) para hacer un ensayo y, por lo tanto, estoy ejecutando las opciones ...

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

Pero el ensayo se está muriendo con el siguiente error ...

[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

Mi método de pago de SVN está configurado en "Obtener siempre una copia nueva" y tengo una versión de instantánea en cuestión en mi repositorio de instantáneas, pero no en mi repositorio de versiones. ¿Hay alguna manera de que la "lista de proyectos de reactor" vea mi repositorio de instantáneas?

Editar: estoy incluyendo el fragmento de mi pom donde el proyecto obtiene su versión: lo hereda de un padre

    <parent>
            <artifactId>subco</artifactId>
            <groupId>org.mainco.subco</groupId>
            <version>52.0.0</version>
    </parent>
Dave
fuente
2
¿Qué versionhay en tu pom.xml?
MariuszS
Tal vez esto pueda ayudar a stackoverflow.com/questions/13513758/…
MariuszS

Respuestas:

156

Estás intentando liberar un artefacto que no es una instantánea. Eso significa que el número de versión de su artefacto es algo así como 3.0.3. Ese número de versión implica que ya se ha lanzado. No puedes lanzar una liberación. No habría cambios en el medio y por lo tanto no tiene sentido.

Se supone que solo debes lanzar versiones SNAPSHOT. Eso significa que su número de versión sería como 3.0.3-SNAPSHOT.

Daniel Kaplan
fuente
1
Agregué cómo obtengo mi versión: la heredo de un pom principal. Lamentablemente, si cambio la versión para incluir "-SNAPSHOT", aparece el error "No se pudo ejecutar el objetivo org.apache.maven.plugins: maven-release-plugin: 2.0: prepare (default-cli) en el proyecto myproject: Can 't lanzamiento del proyecto debido a dependencias no publicadas "
Dave
@Dave Creo que también tendrás que hacer una instantánea del padre.
Daniel Kaplan
Es posible que deba abrir una segunda pregunta SO sobre esto, pero el pom principal tiene una versión SNAPSHOT, aunque es "53.0.0-SNAPSHOT" (en lugar de lo que estoy tratando de heredar, 52.0.0-SNAPSHOT) . ¿Se refería a cambiar la versión en el pom principal?
Dave
1
Creo que el mensaje de error no se explica por sí mismo a menos que sepa lo que significa "lista de proyectos de reactor". Gracias por la respuesta tan clara.
10
Sería mucho más fácil de entender si solo agregaran un mensaje como "No se puede publicar un lanzamiento". El mensaje que se les ocurre es "No tienes un proyecto SNAPSHOT en la lista de proyectos del reactor". ... ¿Quién interpretará este mensaje como se supone que debe hacerlo?
seba.wagner
8

El espacio de trabajo de Jenkins no está limpio o tiene una FINALversión dentro pom.xml. Jenkins tiene una estrategia de verificación para limpiar el espacio de trabajo.

Más: Complemento de lanzamiento de Maven - Se necesita un proyecto SNAPSHOT

Opciones de estrategia de pago:

  • Emule un pago limpio eliminando primero los archivos sin versión / archivos ignorados, así como los archivos / directorios ignorados por svn:ignore, luego ejecute svn update.
  • Siempre revise una copia nueva
  • Utilice svn updatetanto como sea posible, svn revertantes de la actualización
MariuszS
fuente
¿Qué quieres decir con "Jenkins tiene opciones para limpiar el espacio de trabajo"? ¿Dónde están estas opciones? ¿Estás hablando del complemento de limpieza del espacio de trabajo para Jenkins?
Dave
Opciones de estrategia de check-out
MariuszS
1
para mí este fue el caso, después de limpiar el espacio de trabajo de Jenkins funcionó.
rbhawsar
1

Aumente el archivo POM de su proyecto desde la base de código previamente construida a una nueva versión.

1.0.1-INSTANTÁNEA<version>1.0.1-SNAPSHOT</version>

Sr. Nsubuga
fuente
0

Cambiar la estrategia de check-out a "Emular un checkout limpio eliminando primero los archivos no versionados / archivos ignorados, luego svn update" funcionó para mí.

Faentur
fuente