27 votes

Maven activation de profil avec plusieurs conditions

Je suis en train de travailler sur l'obtention de la rpm-plugin maven pour l'installation dans un projet. Dans notre mise en scène et les environnements de production, l'accumulation se produit sur Red Hat boîtes, mais nous avons plusieurs Windows cases qui sont utilisés pour le développement et les tests, donc je voulais le RPM processus de construction de faire partie d'un profil qui n'est active que sur une boîte qui a rpmbuild installé.

C'était ma première tentative de mise en condition:

<activation>
  <os>
    <family>unix</family>
  </os> 
  <file>
    <exists>/usr/bin/rpmbuild</exists>
  </file>
</activation>

Mon premier test a impliqué la création d'une zone de Windows et en s'appuyant sur une CentOS boîte, et tous deux m'ont donné les résultats que j'attendais. Plus tard, la construction de cassé sur une machine Linux qui n'ont pas rpmbuild disponibles. Il semble comme avoir les deux conditions comme ce n'est pas pris en charge. Est-ce le cas? Je me rends compte que je peux probablement juste de se débarrasser de l' <os/> élément et obtenir les résultats que je veux, mais pour l'avenir de référence est-il une meilleure façon de créer des profils avec de multiples conditions d'activation?

30voto

Nishant Points 22758

Maven <activation> bloc est une liste d' OR -- le profil sera activé dès que le premier critère est rencontré. Donc, il est moins probable que votre problème a une solution, au moins jusqu'à ce que ce bug-rapport fixe http://jira.codehaus.org/browse/MNG-4565


Mise à jour:

il est fixé à l'article 3.2.2 maintenant – sfussenegger (via les commentaires)

6voto

Gab Points 1979

Et le pire vous pouvez mélanger de la condition de différent par exemple de type de fichier, jdk et de la propriété, comme décrit ici http://www.sonatype.com/books/mvnref-book/reference/profiles-sect-activation.htmlmais vous ne pouvez même pas mettre deux condition de même type, par exemple deux propriétés

<activation>
    <property>
           <name>integrationTest</name>
    </property>
    <property>
        <name>packaging</name>
        <value>swf</value>
    </property>
 </activation>

Cela ne peut pas fonctionner comme un seul <property> balise sera autorisé. Associé JIRA : http://jira.codehaus.org/browse/MNG-3328

Et le bug décrit ci-dessus est encore ouverte... 5 ans c'est juste une honte !

4voto

Mysterion Points 1263

Juste fixé par moi :)

À partir de 3.2.2 il fonctionnera comme prévu: plusieurs conditions seront ANDed

De référence - https://github.com/apache/maven/commits/master, recherche par MNG-4565

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