2012-04-03 9 views
8

No encuentro una solución para activar algún perfil de Maven en release:prepare y release:perform (ambos) objetivos. Algo como esto:Activación del perfil en ambas versiones: preparar y lanzar: realizar

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-release-plugin</artifactId> 
    <version>2.2.1</version> 
    <configuration> 
    <useReleaseProfile>false</useReleaseProfile> 
    <goals>deploy</goals> 
    <arguments>-Pmy-release</arguments> 
    </configuration> 
</plugin> 

simplemente no funciona. Sé que la configuración releaseProfiles solo funciona durante release:perform, así que solo pensé que la configuración arguments es exactamente lo que quiero, pero el perfil my-profile no está activo durante la ejecución. ¿Estoy haciendo algo mal?

Respuesta

5

Parece una pregunta duplicada. Por favor, eche un vistazo a esta pregunta, tiene una respuesta. maven release plugin ignores releaseProfile

Básicamente la versión 2.2.1 del plugin versión añade un parámetro releaseProfiles que le permitirá definir los perfiles para que durante la liberación.

http://maven.apache.org/plugins/maven-release-plugin/examples/perform-release.html

Por desgracia, parece que hay un bug que prohibirá que hacer lo que quiere ...

Editar

Una cosa que he utilizado en este caso es no utiliza el argumento -P, sino que activa el perfil a través de una configuración de entorno con -Denv=release. Luego, en el POM, tengo la activación de perfil basada en el valor de env. Esto siempre me ha funcionado.

+2

Gracias por su respuesta, @nwinkler. El parámetro 'releaseProfiles' está relacionado solo con el objetivo' release: perform', por lo que no funciona durante 'release: prepare'. Y, tienes razón, su comportamiento es de todos modos realmente extraño. Su sugerencia con la variable '-Dmy-release' es en realidad mi solución actual. No lo mencioné para tener mi pregunta correcta y no sugerir ninguna forma de pensar al respecto.Sin embargo, parece que esta es la única (o al menos la mejor) forma de hacerlo por el momento. Ya he probado la versión '2.3-SNAPSHOT' de' maven-release-plugin' y stil no funciona correctamente. Triste. –

4

Como el complemento de liberación maven inicia una instancia adicional, debe especificar argumentos adicionales. Para files

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-release-plugin</artifactId> 
    <version>2.4</version> 
    <configuration> 
     <arguments>${myReleaseArgs}</arguments> 
    </configuration> 
</plugin> 

y ejecución

mvn release:prepare release:perform -DmyReleaseArgs="-Pmy-release -DskipTests=true" -Pmy-release -DskipTests=true 

y sí que se debe duplicar.

4

-Darguments = "- PmyProfile" parece hacer el trabajo.

1

Funciona de Jenkins activando el perfil tanto para la liberación: preparar y liberar: llevar a cabo mediante el establecimiento de ambas propiedades

<build> 
    <plugins> 
    <plugin> 
     <artifactId>maven-release-plugin</artifactId> 
     <version>2.5.1</version> 
     <configuration> 
     <releaseProfiles>myprofile</releaseProfiles> 
     <arguments>-Pmyprofile</arguments> 
     </configuration> 
    </plugin> 
    </plugins> 
</build > 

A pesar de lo anterior funciona muy bien, me pareció más útil el uso de perfiles activados de archivo. El viejo concepto con un perfil 'maestro' estaba causando un problema, ya que tenía el perfil en mi padre pom. Eso significaba que se estaba activando en cada módulo individual, arbitrario.

Para resolverlo, utilicé el método de activación de archivos de perfil. Funciona aún mejor y, como bonificación, simplifica el lanzamiento en Jenkins. En Eclipse, en la línea de comandos, en Jenkins, también conocido como en todas partes, maven detecta el archivo y el complemento maven-release no tiene que ser configurado. Además, el perfil está activo solo en el módulo correcto.

Cuestiones relacionadas