2009-06-13 15 views
7

Cuando lanzamos proyectos, siempre es el mismo todo el tiempo. ¿Hay algún argumento o propiedad que pueda agregar a la versión: prepare que permita la liberación de patrones en modo batch?Propiedades de liberación de Maven

Ejemplo:

 
What is the release version for "MyProject"? (company.jar.site:myproject) 0.0.1: : 
What is SCM release tag or label for "MyProject"? (company.jar.site:myproject) MyProject-0.0.1: : 
What is the new development version for "MyProject"? (company.jar.site:myproject) 0.0.2-SNAPSHOT: : 

Sería bueno hacer algo como esto:

 
mvn -B release:perform -DreleaseVersion:$nextMinorVersion$ or 
mvn -B release:perform -DreleaseVersion:$nextPatchVersion$ or 
mvn -B release:perform -Dtag:v$nextPatchVersion$ or 
mvn -B release:perform -Dtag:v$nextPatchVersion$-someCustomNaming 

Si ya no existe algo como esto, que creará una costumbre Mojo para hacerlo.

De forma alternativa, durante las indicaciones de arriba usualmente usamos por defecto la primera pregunta, 'v' + la versión actual en la segunda y la siguiente en la última. Si pudiéramos modificar esto de alguna manera, eso resolvería el problema inmediato.

Gracias de antemano.

Respuesta

7
mvn -B release:prepare release:perform 

-B es para el modo por lotes, utilizará los valores predeterminados que ofrece cuando se está en modo no por lotes. En general, para X.Y.Z-SNAPSHOT, hace un lanzamiento de X.Y.Z y establece la nueva instantánea en X.Y. (Z + 1) -SNAPSHOT.

Al igual que con todas las cosas maven, puede luchar contra esta convención de nombres y tener muchos dolores de cabeza, o ceder y decidir que sus versiones y etiquetas van a ser las mejores y obtener muchos de forma gratuita. Luché y perdí. Solo una de las muchas formas en que tiene que ceder completamente a maven si va a usarlo.

Estoy muy contento de haberlo hecho, querer imponer mis propios esquemas generalmente no es una buena idea de todos modos.

+0

El único problema con esto es que generalmente quiero modificar el nombre de la etiqueta que se ofrece.Debido a que mi padre artifactId suele ser "foo-parent" y quiero que la etiqueta sea foo-1.2.3 en lugar de foo-parent-1.2.3. –

2

respuesta parcial, después de su comment:

Para cambiar el nombre de etiqueta, utilice el argumento -Dtag=xxx-release:prepare. Ver the release:prepare documentation para más detalles.

código no probado advirtiendo

Para hacer esto de una manera totalmente automatizada es necesario agregar una entrada de configuración a su pom.xml donde debería definir el nombre de la etiqueta:

<maven-release-plugin> 
    <configuration> 
     <tag>parent-${releaseVersion}</tag> 
    </configuration> 
</maven-release-plugin> 
1

El forma en que lo he hecho es Performing a Non-interactive Release Using a properties file.

se crea un release.properties en la raíz del proyecto agregador (el que tiene embalaje: POM) y para cada proyecto se agregan dos propiedades de la siguiente forma:

project.rel.<groupId>\:<artifactId>=<releaseVersion> 
project.dev.<groupId>\:<artifactId>=<nextSnapshotVersion> 

si quieres utilizar un literal particular para su etiqueta de agregar la siguiente propiedad

scm.tag=<tagLiteral> 

el siguiente es un ejemplo en el que se llevan a cabo ambas cosas (especificar la versión de cada módulo y definen el literal a ser utilizado para etiquetar en el SCM):

scm.tag=my-project-0.2.1 
project.rel.org.monachus.monkeyisland\:my-project=0.2.1 
project.dev.org.monachus.monkeyisland\:my-project=0.2.2-SNAPSHOT 
project.rel.org.monachus.monkeyisland\:module-a=0.1.1 
project.dev.org.monachus.monkeyisland\:module-a=0.1.2-SNAPSHOT 
Cuestiones relacionadas