whats what run plugin for descarga maven-2 maven maven-3

maven 2 - what - ¿Cómo mantener activos los perfiles de Maven activos por defecto, incluso si otro perfil se activa?



what maven is (5)

Tengo un perfil en mi pom.xml que debe estar siempre activo a menos que esté explícitamente desactivado (-P! FirstProfile). Lo resolví usando el indicador activeByDefault:

<profiles> <profile> <id>firstProfile</id> <activation> <activeByDefault>true</activeByDefault> </activation> ... </profile> </profiles>

Ahora, en el mismo pom.xml, tengo un segundo perfil definido, esto solo debería estar activo si el perfil está realmente activado (-P secondProfile). Entonces el comportamiento predeterminado es: firstProfile active, secondProfile inactive. En otro momento me gustaría activar el segundo perfil además del primer perfil. Ahora el problema es que si hago eso con "-P secondProfile" desafortunadamente el primer Perfil se desactiva. La documentación de Maven dice esto:

... Este perfil se activará automáticamente para todas las construcciones a menos que otro perfil en el mismo POM se active utilizando uno de los métodos descritos anteriormente. Todos los perfiles que están activos de forma predeterminada se desactivan automáticamente cuando se activa un perfil en el POM en la línea de comando o a través de su configuración de activación. ...

¿Existe alguna posibilidad de cómo mantener el primer perfil siempre activo (sin tener que declararlo en settings.xml)?


Esta pregunta es antigua, pero parece que el problema se puede resolver utilizando activeProfile lugar de activeByDefault . Estoy en Maven 3.3.9, pero la solución puede funcionar en versiones anteriores.

Simplemente enumere activeProfiles en su settings.xml , así:

<settings> <profiles> [...] </profiles> <activeProfiles> <activeProfile>my-awesome-profile</activeProfile> </activeProfiles> </settings>

En my-awesome-profile tengo configuraciones como URL de base de datos, etc., por lo que siempre se aplican. Aquí, activo un segundo perfil, resolve-from-central :

$ mvn help:all-profiles -P resolve-from-central [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building Maven Stub Project (No POM) 1 [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-help-plugin:2.2:all-profiles (default-cli) @ standalone-pom --- [INFO] Listing Profiles for Project: org.apache.maven:standalone-pom:pom:1 Profile Id: resolve-from-central (Active: true , Source: settings.xml) Profile Id: my-awesome-profile (Active: true , Source: settings.xml) Profile Id: resolve-from-internal (Active: false , Source: settings.xml)

Observe cómo my-awesome-profile aún está activo. ¡Hurra!


No puede mantener activo el perfil predeterminado, pero puede tomar el contenido de ese perfil (el ... en su ejemplo) y simplemente moverlo a la sección principal del pom.

Solo porque esté usando perfiles, no significa que todo lo que está haciendo debe estar dentro de un perfil.


Ojalá hubiera tal posibilidad, a menudo me la perdí. El único problema relevante de JIRA que pude encontrar es este:

MNG-4917: Perfil no activo a pesar de que tiene activeByDefault establecido en true

Y se ha resuelto como Not A Problem .

Dejé de usar activeByDefault , porque este enfoque de "todo o nada" no me activeByDefault nada.

La única forma de cambiar este comportamiento es escribir su propio reemplazo para DefaultProfileSelector , registrarlo como un componente plexus con @Component( role = ProfileSelector.class ) y ponerlo en ${MAVEN_HOME}/lib/ext (de esa manera será elegido como selector de perfil predeterminado). (Si está usando Maven 3.0.2 o una versión anterior, también deberá editar ${MAVEN_HOME}/bin/m2.conf para cargar lib/ext antes de cargar lib )


Simplemente puede listar todos los perfiles que desea activar en la línea de comando como tal:

-P perfil-1, perfil-2

maven fue diseñado para permitir la activación de múltiples perfiles de forma automática, si, sin embargo, anula eso con el -P, entonces solo se activan los perfiles enumerados en el parámetro.


Un truco es evitar activeByDefault , y en su lugar activar el perfil por la ausencia de una propiedad, por ejemplo:

<profiles> <profile> <id>firstProfile</id> <activation> <property> <name>!skipFirstProfile</name> </property> </activation> ... </profile> </profiles>

Debería poder desactivar el perfil con -DskipFirstProfile o con -P !firstProfile , pero de lo contrario el perfil estará activo.

Ver: Maven: La Referencia Completa, Activación de Perfil - Activación por la Ausencia de una Propiedad