lanzamiento de mvn: prepárese para no realizar cambios en pom.xml

81

Estoy tratando de lanzar un complemento de Jenkins ( stashNotifier ) con Maven y tengo un problema con el complemento de lanzamiento.

mvn clean release:prepare

se ejecuta hasta su finalización sin errores pero no confirma el pom.xml modificado en mi repositorio local de git. A pesar de que etiqueta el HEAD de la rama en la que estoy tratando de lanzar la versión 1.0.2. Así es como se ve mi sucursal local antes de preparar el lanzamiento

* df60768 (HEAD, origin/develop, develop) upgraded parent pom to version 1.498
* 792766a added distribution management section to pom.xml and amended readme.md 

y esto es lo que parece después

* df60768 (HEAD, tag: stashNotifier-1.0.2, origin/develop, develop) upgraded parent pom to version 1.498
* 792766a added distribution management section to pom.xml and amended readme.md 

Desafortunadamente, pom.xml ya contiene la próxima versión de desarrollo, que a su vez provoca una versión posterior: realizar para lanzar esa versión instantánea.

Desde la salida del comando de maven, casi parece que está omitiendo el comando git commit:

[INFO] Checking in modified POMs...
[INFO] Executing: /bin/sh -c cd /Users/gruetter/Dropbox/stashNotifier && git add -- pom.xml
[INFO] Working directory: /Users/gruetter/Dropbox/stashNotifier
[INFO] Executing: /bin/sh -c cd /Users/gruetter/Dropbox/stashNotifier && git status
[INFO] Working directory: /Users/gruetter/Dropbox/stashNotifier
[INFO] Tagging release with the label stashNotifier-1.0.2...
[INFO] Executing: /bin/sh -c cd /Users/gruetter/Dropbox/stashNotifier && git tag -F /var/folders/dr/xxbtyycs1z9dl2_snlj87zrh0000gn/T/maven-scm-678409272.commit stashNotifier-1.0.2
[INFO] Working directory: /Users/gruetter/Dropbox/stashNotifier
[INFO] Executing: /bin/sh -c cd /Users/gruetter/Dropbox/stashNotifier && git push [email protected]:jenkinsci/stashnotifier-plugin.git stashNotifier-1.0.2
[INFO] Working directory: /Users/gruetter/Dropbox/stashNotifier
[INFO] Executing: /bin/sh -c cd /Users/gruetter/Dropbox/stashNotifier && git ls-files
[INFO] Working directory: /Users/gruetter/Dropbox/stashNotifier
[INFO] Transforming 'Stash Notifier'...
[INFO] Not removing release POMs
[INFO] Checking in modified POMs...
[INFO] Executing: /bin/sh -c cd /Users/gruetter/Dropbox/stashNotifier && git add -- pom.xml
[INFO] Working directory: /Users/gruetter/Dropbox/stashNotifier
[INFO] Executing: /bin/sh -c cd /Users/gruetter/Dropbox/stashNotifier && git status
[INFO] Working directory: /Users/gruetter/Dropbox/stashNotifier
[INFO] Release preparation complete.

Estoy ejecutando maven 3.0.5 (sin --dry-run o -DpushChanges = false). Aquí están las partes relevantes (creo) de mi pom efectivo:

[...]

<scm>
   <connection>scm:git:git://github.com/jenkinsci/stashnotifier-plugin.git</connection>
   <developerConnection>scm:git:[email protected]:jenkinsci/stashnotifier-plugin.git</developerConnection>
   <url>https://github.com/jenkinsci/stashnotifier-plugin</url>
</scm>

[...]

<distributionManagement>
   <repository>
      <id>maven.jenkins-ci.org</id>
      <url>http://maven.jenkins-ci.org:8081/content/repositories/releases/</url>
   </repository>
   <snapshotRepository>
      <id>maven.jenkins-ci.org</id>
      <url>http://maven.jenkins-ci.org:8081/content/repositories/snapshots</url>
   </snapshotRepository>
   <site>
     <id>github-pages</id>
     <url>gitsite:[email protected]/jenkinsci/maven-site.git:plugin-parent/stashNotifier</url>
   </site>
</distributionManagement>

[...]

<properties>
   [...]
   <maven-release-plugin.version>2.2.2</maven-release-plugin.version>
   [...]
</properties>

[...]

<build>
   [...]
   <pluginManagement>
      <plugins>
         [...]
         <plugin>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.2.2</version>
         </plugin>
         [...]
   </pluginManagement>

   [...]

   <plugins>
      [...]
      <plugin>
         <artifactId>maven-release-plugin</artifactId>
         <version>2.2.2</version>
         <configuration>
            <goals>deploy</goals>
         </configuration>
      </plugin>
      [...]
   </plugins>
</build>

¿Qué estoy haciendo mal? ¡Gracias de antemano por sus ideas!

BumbleGee
fuente
Lamentablemente, no veo ningún mensaje de error relacionado con su descripción. ¿Puede mostrar los mensajes de error que recibe?
Khmarbaise
2
Esa es la cosa; no hay ningún mensaje de error. ¿Está interesado en una sección particular de la salida? (Me gustaría evitar hinchar la pregunta agregando la salida de la línea de comando maven de varias páginas)
BumbleGee
Acabo de tener exactamente el mismo problema y lo resolví actualizando a la versión 2.4 de maven-release-plugin.
brk3
También tuve el mismo problema, solo que lo solucioné bajando de la versión 2.4 a la 2.3.2. Imagínate.
Greg Case
2
También tuve el problema, pero la actualización de 2.4.1 a 2.5.1 me lo resolvió.
John Fear

Respuestas:

95

Resolví el problema de mi lado (ejecutando maven 3.0.5) actualizando la dependencia del proveedor git scm, no la versión del complemento de lanzamiento:

<build>
  <plugins>
    <plugin>
      <artifactId>maven-release-plugin</artifactId>
      <version>2.4.2</version>
      <dependencies>
        <dependency>
          <groupId>org.apache.maven.scm</groupId>
          <artifactId>maven-scm-provider-gitexe</artifactId>
          <version>1.8.1</version>
        </dependency>
       </dependencies>
      </plugin>
    </plugins>
</build>

La versión de git scm 1.8.1 realiza correctamente la confirmación de git (probado con los objetivos de preparación y reversión).

EDITAR: Es posible que se requieran diferentes versiones de maven-release-plugin y maven-scm-provider-gitexe según su entorno. Vea los comentarios para más discusión.

richnou
fuente
1
Esto resolvió mi problema de git con maven-release-plugin 2.4.2. Muy agradable.
kevinarpe
3
@BumbleGee, ¡debería considerar aceptar esta respuesta!
ericbn
2
No se corrige con <artifactId>maven-release-plugin</artifactId> <version> 2.5.2 </version> y si define la dependencia de maven-release-plugin con la última versión publicada (1.9.4) de maven-scm -proveedor-gitexe. Cambié la versión de plugin dep .. a 1.8.1 y todo funcionó bien.
Tobias Hochgürtel
3
Segundo @ TobiasHochgürtel. La combinación de 2.5.2 y 1.9.4 todavía tiene un error. 2.5.2 y 1.8.1 parece estar bien.
Kenny
4
Todavía tenía el problema de que los cambios en los POM no se comprometieron con Maven 3.3.1, maven-release-plugin 2.4.1 y maven-scm-provider-gitexe 1.9. La actualización a maven-release-plugin 2.5.3 y maven-scm-provider-gitexe 1.9.4 resolvió el problema.
Sven Ackermann
17

Me encontré con el mismo problema, la solución de #richnou funciona para mí (actualizar la dependencia de SCM). Existe el problema creado en este problema, vea el enlace a continuación. El problema se relaciona con la nueva versión de Git donde "git status" devuelve mensajes localizados que el complemento no puede analizar. Es la causa fundamental. El problema se solucionó en git scm (versión 1.8.1) utilizando la --porcelainopción de git (que debería devolver una salida fácilmente analizable), pero después de esta solución, ha surgido otro problema: si la raíz del repositorio (etiqueta scm) no es el directorio de trabajo, release:preparetodavía falla. Este problema parece estar solucionado en la versión instantánea de Git SCM (aún no lanzado). Esto puede solucionarse copiando la scmetiqueta en el pom hijo.

MRELEASE-812

SCM-709

maven-release-plugin-y-git-fix

vasekt
fuente
También tuve el mismo problema. Tengo maven 3.2.1 y git 1.9.1. Simplemente actualizar el complemento de versión a 2.5 no funcionó para mí porque el directorio que tenía el pom no era la raíz de git. Como Richnou sugirió, actualicé maven-scm-provider-gitexe a la última versión 1.9.2 y resolvió el problema.
Chathurika Sandarenu
9

En primer lugar, las respuestas de richnou y vasekt resolvieron mi problema. Pensé que publicaría esta respuesta solo por las versiones más nuevas que se han mencionado y pensé que sería bueno dar un ejemplo adicional que las incluya.

Estaba ejecutando el complemento de lanzamiento de maven 2.3.2 con Git 3.3.x sin especificar la versión de dependencia de maven scm, que estaba causando el problema de la instantánea. Para mí, acabo de actualizar a la última versión en ese momento tanto para el complemento de lanzamiento de maven como para la dependencia de scm, que eran las siguientes:

<plugin>
   <artifactId>maven-release-plugin</artifactId>
   <version>2.5.3</version>
   <dependencies>
      <dependency>
         <groupId>org.apache.maven.scm</groupId>
         <artifactId>maven-scm-provider-gitexe</artifactId>
         <version>1.9.5</version>
      </dependency>
   </dependencies>
</plugin>

Esto funcionó bien para mí, las versiones de lanzamiento se cargaron correctamente en el repositorio de lanzamiento y la instantánea también funcionó como se esperaba.

Jeremy
fuente
2
En mi caso, solo tuve que actualizar maven-release-plugin a 2.5.3. No fue necesario especificar la dependencia de gitexe.
colini
1
Maven 3.5.2, Maven-release-plugin 2.5.3 + proveedor 1.9.5 no confirma los pom después del lanzamiento de mvn: prepárate para mí. Sin embargo, el proveedor 1.8.1 sí lo hace.
Avec
Actualice mi comentario anterior. 1.8.1 funciona para realizar proyectos de un solo pom pero no para proyectos de varios módulos.
Avec
9

Probablemente esté leyendo esto porque las soluciones anteriores no le han funcionado. Tuve el mismo problema y probé todo lo mencionado aquí. Mis versiones fueron: maven-release-plugin 2.5ygit 1.7.9

La solución que funcionó para mí fue degradar maven-release-plugin a la versión 2.3.2

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <autoVersionSubmodules>true</autoVersionSubmodules>
            </configuration>
        </plugin>
    </plugins>
</build>
Iulian Ghionoiu
fuente
4
Tenía maven-release-plugin-2.3.2y git v1.9.3 y actualicé para maven-release-plugin-2.5arreglarlo por mí.
Sean Connolly
Tenía maven-release-plugin-2.3.1y git 1.9.4y actualizar a maven-release-plugin-2.5también funcionó para mí.
Galés
1
Actualizar el complemento para 2.5.2resolver el problema por mí, con git2.4.0
JBCP
tal vez sea un problema de interbloqueo de la versión git / mvn. ¿Por qué el último maven (3.3.9) todavía tiene el complemento de versión predeterminado en 2.3.2? ¿Es esto un error maven? maven.apache.org/ref/3.3.9/maven-model-builder/super-pom.html
Steven R. Loomis
4

La actualización maven-release-plugina 2.5.2 ayudó (la actualización a 2.5 no lo hizo; funciona para algunas personas pero no para todas, posiblemente dependiendo de otro software más nuevo en el sistema). Creo que automáticamente atrae al nuevo proveedor.

mirabilos
fuente
Solo nota: para mí solo 2.5 fue suficiente.
Innokenty
1

Me encontré con el mismo problema y, a partir de las otras respuestas y comentarios, pensé que probablemente era un error en el complemento de lanzamiento.

En mi caso, estaba usando la versión 2.4 del complemento con git en un proyecto nuevo y casi vacío estructurado de la siguiente manera:

my-repo.git/
  module-parent/     # running the release from here
  (module-child-1/)  # except I hadn't created it yet
  (module-child-2/)  # except I hadn't created it yet

(El código fuente de este proyecto se puede ver aquí, antes de resolver el problema: mi proyecto con el mismo problema ).

Mirando las notas de la versión de maven-release-plugin: 2.4.1 , parecía que quizás MRELEASE-830 tenía una oportunidad de resolverlo.

No estoy seguro de si ese fue realmente el problema, pero actualizar mi proyecto a 2.4.1 del complemento lo resolvió por mí . ¡Espero que también te resuelva el problema!

Karl M. Davis
fuente
1

Encontré este mismo problema al usar cygwin + maven + git. No mostró errores pero no intentó realizar los cambios de pom, simplemente se detuvo después de git status:

[INFO] Checking in modified POMs...
[INFO] Executing: cmd.exe /X /C "git add -- pom.xml"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Executing: cmd.exe /X /C "git status"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Tagging release with the label portal-automation-0.3.9...
[INFO] Executing: cmd.exe /X /C "git tag -F C:\cygwin64\tmp\maven-scm-1212196933.commit portal-automation-0.3.9"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Executing: cmd.exe /X /C "git push [email protected]:org-mitre-caasd/portal-automation.git portal-automation-0.3.9"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Executing: cmd.exe /X /C "git ls-files"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Transforming 'portal-automation'...
[INFO] Not removing release POMs
[INFO] Checking in modified POMs...
[INFO] Executing: cmd.exe /X /C "git add -- pom.xml"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Executing: cmd.exe /X /C "git status"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Release preparation complete.

Como puede ver, no hay errores, simplemente no se cometió después de verificar el estado. Sin embargo, cuando ejecuté desde el símbolo del sistema de Windows en su lugar:

...
[INFO] Executing: cmd.exe /X /C "git add -- pom.xml"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Executing: cmd.exe /X /C "git status"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Executing: cmd.exe /X /C "git commit --verbose -F C:\Users\ltheisen\AppData\Local\Temp\maven-scm-2030091036.commit pom.xml"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Executing: cmd.exe /X /C "git symbolic-ref HEAD"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Executing: cmd.exe /X /C "git push [email protected]:org-mitre-caasd/portal-automation.git master:master"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Release preparation complete.

Puede ver que se comprometió después de verificar el estado. No estoy seguro si este es tu problema también, pero funcionó para mí.

Tenga en cuenta que esto significaría que necesita instalar msysgit

Lucas
fuente
1

Estoy usando Git 1.8.xy localmente y encontré un problema similar:

maven-scm-plugin hace

$ git add
$ git status

pero no

$ git commit

Usar otra máquina con Git 1.7.x me ayudó a solucionar este problema.

Nota: Intenté usar maven-scm-plugin 1.8.1 o 1.9, maven-release-plugin 2.4.1 o 2.4.2.

Lukas Fryc
fuente
rebajar a 1.7.x también me ayudó
CAB
0

Problema similar, pero tuve este problema, usando Jenkins Release Plugin y Gitlab:

  • Primera vez que funcionó.
  • La segunda vez no se comprometería.

Resulta que teníamos un error tipográfico en la configuración de SCM en nuestro pom.xml, por lo que el proyecto con error se creó la primera vez. En la segunda vez, Maven estaba accediendo al proyecto desactualizado y se quejó, no comprometiendo los cambios.

exic
fuente