Pregunta

Soy la creación de Hudson usar el plugin lotes tarea de hacer comunicados de Maven para nuestro repositorio interno. Lo estoy haciendo a través de:

mvn --batch-mode release:prepare
mvn --batch-mode release:perform

Estoy interesado en otras personas han utilizado métodos y las ventajas y desventajas de estos métodos. Además, cualquier persona Gotchas han encontrado.

¿Fue útil?

Solución

He tendido a hacer los comunicados siempre a mano por varias razones. En primer lugar, si usted tiene que hacer retroceder es más fácil cuando se puede volver a la versión original ubicación y hacerlo. En segundo lugar porque es necesario para resolver todas las dependencias de instantáneas como parte del proceso.

Nuestro proceso de desarrollo tiene dejándonos dependencias externas a la versión actual en la versión anterior hasta que una solución es necesario una actualización. Esto significa que si estoy liberando Nexus, Maven, etc, entonces veo instantáneas y eso significa que tengo que ir fuera y liberar los primeros. Este proceso no es realmente posible automatizar, ya que varía en función de lo que ha cambiado desde la última versión.

Dicho esto, tenemos una máquina especial (al Sonatype es sólo una máquina virtual) de configuración sólo para construye. Esto se hace para garantizar que no se producen cambios ambientales que podrían influir en la acumulación accidental (como un cambio JDK). También hace que sea más fácil para cualquier persona para recoger el proceso de liberación, ya que siempre está listo para ir.

Otros consejos

Recientemente, un plugin m2release me llamó la atención. Parecía agradable. Aunque incluya, me hubiera gustado que mi proceso de liberación a ser completamente «pom-free-Ajustes». Lo que quiero decir con esto es que tenemos para proporcionar 4 parámetro de entrada para procesar una liberación completa:

  1. la versión de lanzamiento (ex. 1.0.0)
  2. la nueva versión de desarrollo (ej. 1.0.1-SNAPSHOT)
  3. la etiqueta de versión en SCM (ex. Liberar-1.0.0 o 1.0.0)
  4. la ruta de la base de etiqueta en SCM

La primera 2 tienen valores predeterminados aceptables. La versión de chocar en la versión de corrección de errores dígitos está perfectamente bien para mí.

Número 4 se puede especificar en el POM. No va a cambiar.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-release-plugin</artifactId>
    <configuration>
        <tagBase>https://example.com/svn/myProject/releases</tagBase>
    </configuration>
</plugin>

Es la tercera que me impiden una automatización completa de un comunicado en el empuje de un botón. La etiqueta de la liberación por defecto no lo hará por nosotros lo que tenemos que especificar que:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-release-plugin</artifactId>
    <configuration>
        <tag>release-${pom.version}</tag>
        <tagBase>https://example.com/svn/myProject/releases</tagBase>
    </configuration>
</plugin>

Ahora, si bien esto podría ser justo lo que necesitaba, me acaban de tener una etiqueta con el SVN -SNAPSHOT al final. :( Así que tengo que pasar el parámetro variable en la configuración del trabajo de Hudson. Además, tengo que ir a cambiar para cada versión hacemos ... que no es exactamente lo que necesito.


Así que, al final, tener un proyecto de tipo maven2 en Hudson + el plugin m2release Hudson + la liberación experta en el plugin configurado correctamente es la madre de todo el proceso de liberación que he visto hasta ahora. Aunque no es perfecto, que me ahorró una obra tiedous mucho.

JS.

Siempre he provocó una liberación manual con ventajas y desventajas evidentes: -)

Hemos estado experimentando con la versión plugin de Maven Hudson, aunque estoy un poco desafiado con conseguir que acreditar adecuadamente las emisiones, sin malas cosas como hardcoding contraseñas en nuestros archivos de generación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top