Obtener el complemento de lanzamiento de SonaType para que se comporte cuando se usa git. O mejores alternativas?

Nota: pregunta larga, así que en esencia: deseo saber cómo lanzar, vía maven, un lanzamiento santificado de un proyecto existente bajo mi control. Yo uso sonatype y su complemento en este momento, pero su complemento de lanzamiento simplemente no me deja presionar un SHA1 como versión. Si existen soluciones lists para usar, las adopto cualquier día, siempre que me diga cómo modificar mi pom.xml, vinculado a continuación

Tengo un proyecto de Java (disponible en GitHub y en uso ya) que desarrollo utilizando Intellij IDEA 12.0.1 (versión de comunidad) en Ubuntu 12.10, 64 bits. La versión instalada de maven es la que mi distribución distribuye (3.0.4).

El problema que tengo recae en el pom.xml del proyecto:

https://raw.github.com/fge/json-schema-validator/master/pom.xml

Seguí la guía de lanzamiento de SonaType . He configurado GPG, etc., todo funciona bien. Puedo lanzar usando su plugin que, supongo, se desencadena por las siguientes líneas en pom.xml :

 <parent> <groupId>org.sonatype.oss</groupId> <artifactId>oss-parent</artifactId> <version>7</version> </parent> 

Sin embargo, tengo varios problemas con este complemento (¿pero realmente es ese?):

  • crea commits de basura, siempre con el prefijo [mvn-release-plugin] , y no quiero eso;
  • clona desde el URI de developerConnection cada vez que quiere lanzar, lo cual es, francamente, estúpido para cualquiera que sepa cómo funciona git (una fetch simple y una comparación SHA1 pueden detectar discrepancias), y este comportamiento es aún más molesto que mi connection de networking es pobre, por decirlo suavemente;
  • pide crear una label: no quiero eso, puedo crearlo yo mismo, muchas gracias;
  • ni siquiera le permitirá personalizar el post de confirmación de la versión (y quiero include un breve logging allí).

Por lo tanto, cuando esté listo para un lanzamiento, sigo estos pasos:

  1. crear una label en HEAD , llamada before
  2. git cherry-pick commit (que sé SHA1 de) que reemplaza, en pom.xml , todos los URI del repository git en un repository local mío, que sincronizo según sea necesario;
  3. en el indicador del intérprete de commands, deje que el complemento llegue a su material para que el lanzamiento esté disponible "en general":

     mvn release:clean mvn release:prepare mvn release:perform 
  4. git rebase before : deshazte de la confirmación cambiando los URI de git, squash / reword, etc. para que los commit de basura desaparezcan y el post de lanzamiento contenga un shortlog de cambios;

  5. crea la label real;
  6. presionar a github.

Por supuesto, esto significa que el lanzamiento de Maven, que garantizo que es sano y correcto, no coincide con el SHA1 de la versión equivalente en el proyecto de Github. Y me gustaría deshacerme de esa discrepancia.

Entonces, ¿cómo hago para que el complemento de lanzamiento de Sonatype se comporte? Es decir, cómo lo digo:

  • confíe en el repository git local en lugar de git clone desde developerConnection ,
  • no crear compromisos inútiles,
  • déjame personalizar el post de lanzamiento?

¿O hay una mejor alternativa que me permita no pasar por estos processs engorrosos?

Detalles disponibles a pedido.

El complemento de lanzamiento es el complemento "oficial" maven-release-plugin, no una versión especial de Sonatype. Consulte los documentos para preparar y realizar objectives, especialmente localCheckout , pushChanges y suppressCommitBeforeTag (aunque no estoy seguro de que el último haga lo que necesita).

Si prepara su proyecto manualmente cambiando a una versión de lanzamiento y agregando una label, incluso podría omitir la release:prepare y solo ejecutar release:perform -DlocalCheckout=true , que (en teoría;) se comstackría a partir de su label y empujar esos artefactos a OSSRH.