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!
Respuestas:
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.
fuente
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
--porcelain
opció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:prepare
todavía falla. Este problema parece estar solucionado en la versión instantánea de Git SCM (aún no lanzado). Esto puede solucionarse copiando lascm
etiqueta en el pom hijo.MRELEASE-812
SCM-709
maven-release-plugin-y-git-fix
fuente
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.
fuente
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.5
ygit 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>
fuente
maven-release-plugin-2.3.2
y git v1.9.3 y actualicé paramaven-release-plugin-2.5
arreglarlo por mí.maven-release-plugin-2.3.1
y git1.9.4
y actualizar amaven-release-plugin-2.5
también funcionó para mí.2.5.2
resolver el problema por mí, con git2.4.0
La actualización
maven-release-plugin
a 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.fuente
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:
(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!
fuente
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
: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:
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
fuente
Estoy usando Git 1.8.xy localmente y encontré un problema similar:
maven-scm-plugin hace
pero no
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.
fuente
Problema similar, pero tuve este problema, usando Jenkins Release Plugin y Gitlab:
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.
fuente