Saltar al contenido

Aplicar exactamente uno de los dos perfiles de Maven

Solución:

Tenía una necesidad similar (es decir, la exclusividad mutua de dos perfiles) y la resolví considerando que los dos perfiles de destino eran perfiles internos que no debería especificarse en la línea de comando: en su lugar, un control propiedad del sistema se puede especificar o no. Por ejemplo, supongamos que de forma predeterminada desea que el perfil “dev” esté activo. A continuación, podemos activar / desactivar el correspondiente perfiles internos basado en si el -Drelease La opción se especifica de la siguiente manera:

<!-- Internal profile: FOR INTERNAL USE ONLY - active if -Drelease is *not* specified. -->
<profile>
  <id>internal-dev</id>
  <activation>
    <!-- Activation via *absence* of a system property to ensure mutual exclusivity
         of this profile with internal-release -->
    <property>
      <name>!release</name>
    </property>
  </activation>
  ...
</profile>

<!-- Internal profile: FOR INTERNAL USE ONLY - active if -Drelease *is* specified. -->
<profile>
  <id>internal-release</id>
  <activation>
    <!-- Activation via *presence* of a system property to ensure mutual exclusivity
         of this profile with internal-dev -->
    <property>
      <name>release</name>
    </property>
  </activation>
  ...
</profile>

Siempre emito un comando de compilación como este:

mvn package -P-dev,prod

Deshabilita explícitamente el perfil de desarrollo y habilita el de producción. Que yo sepa, no puede habilitar condicionalmente un perfil de compilación si otro está activo (lo cual es un poco desafortunado), y por eso no puede asegurarse de que los perfiles sean mutuamente excluyentes.

La solución más simple para este tipo de problema sería usar el complemento maven-enforcer-plugin que tiene exactamente tal regla para forzar la activación de al menos uno de dos o más perfiles.

Desafortunadamente, requireActiveProfile tiene actualmente un error. Pero actualmente se están preparando para una nueva versión que resuelve este problema.

Actualizar El error mencionado anteriormente se ha corregido en la versión 1.4 (que se lanzó en 2015).

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *