105 votes

Comment garder les profils Maven actifsByDefault actifs même si un autre profil est activé?

J'ai un profil dans mon pom.xml qui doit être toujours actif, sauf s'il est explicitement désactivé (-P !firstProfile). J'ai résolu ce problème en utilisant le activeByDefault drapeau:

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

Maintenant, dans le même pom.xml j'ai un deuxième profil défini ce ne doit être activé que si le profil est vraiment activé (-P secondProfile). Ainsi, le comportement par défaut est: firstProfile active, secondProfile inactif. À un autre point que je voudrais activé le second profil, en plus du premier profil. Maintenant, le problème est que si je fais ça avec l'option "-P secondProfile" la firstProfile malheureusement est désactivée. Le Maven documentation indique ceci:

... Ce profil sera automatiquement active pour toutes les versions, sauf si une autre profil de la même POM est activé en utilisant l'un de l'décrit précédemment des méthodes. Tous les profils qui sont actifs par défaut sont automatiquement désactivée lorsqu'un profil dans le POM est activé sur la ligne de commande ou grâce à son activation config. ...

Est-il en quelque sorte une possibilité comment garder la firstProfile toujours actif (sans avoir à les déclarer dans le settings.xml)?

146voto

seanf Points 1698

Une astuce consiste à éviter activeByDefault, et au lieu d'activer le profil par l'absence d'une propriété, par exemple:

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

Vous devriez alors être en mesure de désactiver le profil de l' -DskipFirstProfile ou avec -P !firstProfile, mais sinon, le profil sera actif.

Voir: Maven: The Complete Reference : Activation par l'Absence d'une Propriété

25voto

Sean Patrick Floyd Points 109428

Je souhaite qu'il y ait une telle possibilité, j'ai souvent manqué. La seule JIRA problème que j'ai pu trouver est celui-ci:

MNG-4917: Profil non actif, même si elle a activeByDefault ensemble de vrai

Et il a été résolu qu' Not A Bug.

J'ai cessé de l'utiliser activeByDefault, parce que ce "tout ou rien" approche fait il est inutile pour moi.


Le seul moyen de changer ce comportement est d'écrire votre propre remplacement pour DefaultProfileSelector, l'enregistrer comme un plexus composant avec @Component( role = ProfileSelector.class ) et le mettre dans ${MAVEN_HOME}/lib/ext (de cette façon, il sera pris par défaut sélecteur de profil). (Si vous utilisez Maven 3.0.2 ou plus, vous devrez également modifier ${MAVEN_HOME}/bin/m2.conf à la charge lib/ext avant charges lib)

4voto

Assem Points 21

Vous pouvez simplement lister tous les profils que vous voulez activer sur la ligne de commande en tant que tels:

-P profil-1, profil-2

maven a été conçu pour autoriser automatiquement l'activation de plusieurs profils. Toutefois, si vous le remplacez par l'option -P, seuls les profils répertoriés dans le paramètre sont activés.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X