supermodulo submodule rama pick partir otra example español crear cherry git maven github

rama - git submodule español



Lanzamiento de un proyecto de múltiples módulos de maven con Git. (5)

Estoy intentando lanzar un proyecto de varios módulos de maven que utiliza git como SCM, y uno de los primeros problemas que he encontrado es la forma en que el complemento de la versión de Maven crea el release.properties scm.url. Mi padre POM se ve algo como esto:

<packaging>pom</packaging> <groupId>org.project</groupId> <artifactId>project-parent</artifactId> <version>1.0.0-SNAPSHOT</version> <scm> <connection>scm:git:git://github.com/username/project.git</connection> <developerConnection>scm:git:[email protected]:username/project.git</developerConnection> <url>http://github.com/username/project</url> </scm> <modules> <module>api</module> <module>spi</module> </modules>

Y los módulos POM son sencillos:

<parent> <groupId>org.project</groupId> <artifactId>project-parent</artifactId> <version>1.0.0-SNAPSHOT</version> </parent> <artifactId>api</artifactId> <version>0.2.2</version>

Mi objetivo es poder lanzar módulos individuales ya que cada uno tiene diferentes versiones y no quiero incrementar todas las versiones juntas cada vez que hago un lanzamiento.

Cuando me cambio al directorio de api y hago un mvn release:clean release:prepare me encuentro con el siguiente resultado:

[INFO] Executing: cmd.exe /X /C "git push [email protected]:username/project.git/api master:master" [INFO] ------------------------------------------------------------------------ [ERROR] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Unable to commit files Provider message: The git-push command failed. Command output: ERROR: Repository not found.

Parece que el plugin de Maven release crea el scm.url agregando el nombre del módulo a developerConnection , que termina no siendo un repositorio válido en github. No estoy seguro de cuál es la forma correcta de configurar esto. Podría ser el caso de que Maven + git + lanzando un módulo hijo individual simplemente no funcione. Cualquier entrada es apreciada.


De una forma sencilla, lo que funcionó para mí es usar las propiedades principales en los módulos pom.xml como seguir en la etiqueta scm como sigue:

<!--module pom.xml--> <scm> <connection>${project.parent.scm.connection}</connection> <developerConnection>${project.parent.scm.developerConnection}</developerConnection> </scm>


Durante mucho tiempo intenté hacer algo similar, y nunca encontré una buena solución, así que escribí mi propio complemento de lanzamiento para git. Solo libera módulos modificados, no necesita ninguna configuración de SCM, etiquetas basadas en los nombres de los módulos y el trabajo de las dependencias entre componentes.

Documentación: http://danielflower.github.io/multi-module-maven-release-plugin/index.html

Blog de introducción: http://danielflower.github.io/2015/03/08/The-Multi-Module-Maven-Release-Plugin-for-Git.html


Encontré esta pregunta con una búsqueda en "el comando git-push falló". Tengo una configuración similar donde tengo un master-pom y luego submódulos que libero como sus propios paquetes de Maven.

Para que funcionara tuve que ajustar la sección scm del pom.xml a algo como lo siguiente. Las conexiones específicamente tenían que ser sintonizadas correctamente para trabajar. Ninguno de los github trabajó en absoluto.

<scm> <url>https://github.com/XXX/YYY</url> <connection>scm:git:ssh://[email protected]/XXX/YYY.git</connection> <developerConnection>scm:git:ssh://[email protected]/XXX/YYY.git</developerConnection> </scm>

El XXX en el ejemplo anterior es su nombre de usuario github. No puede usar el formato :XXX ( [email protected]:XXX/... ) porque el valor pasado el : se interpreta como un número de puerto en su lugar. El YYY es obviamente el nombre de su repositorio en la cuenta XXX .

Acabo de publicar los 3 de mis submódulos uno por uno usando este patrón con éxito.


Para cualquiera que llegue a esta pregunta en busca de una buena solución como lo hice, lo que encontré que funciona para mí es lo siguiente:

http://blog.avisi.nl/2012/02/15/maven-release-plugin-setup-guide-for-git/

Sigues ''etiquetando'' todo el tronco porque así es como funciona git, pero solo te permite compilar / crear / desplegar el submódulo que quieras.


Para ver cómo hacer que esto funcione, eche un vistazo a un ejemplo funcional, como:

https://github.com/sonatype/sonatype-aether

Sin embargo, esto no ayudará si desea liberar las piezas individuales. En ese caso, solo tienes que copiar los elementos <scm> en todos los poms.

Este es un tema de discusión activo en la lista de desarrolladores de Maven, pero no contenga la respiración para una solución desde allí; tiene mucha importancia.