Активация профиля Maven с несколькими условиями - PullRequest
40 голосов
/ 07 января 2011

Я работаю над настройкой плагина rpm-maven в проекте.В нашей промежуточной и производственной средах сборка происходит на коробках Red Hat, но у нас есть несколько коробок Windows, которые используются для разработки и тестирования, поэтому я хотел, чтобы процесс сборки RPM был частью профиля, который активен только на коробке, которая имеетrpmbuild установлен.

Это была моя первая попытка условия активации:

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

Мое первоначальное тестирование включало только сборку на коробке Windows и сборку на коробке CentOS, и обе далирезультаты я ожидал.Позже, сборка сломалась на машине Linux, на которой не было доступно rpmbuild.Похоже, что два условия не поддерживаются.Это тот случай?Я понимаю, что, возможно, могу просто избавиться от элемента <os/> и получить желаемые результаты, но для дальнейшего использования есть лучший способ создания профилей с несколькими условиями активации?

Ответы [ 3 ]

42 голосов
/ 07 января 2011
Блок

Maven <activation> представляет собой список OR - профиль будет активирован, как только будут выполнены первые критерии. Таким образом, менее вероятно, что ваша проблема найдет решение по крайней мере до тех пор, пока этот отчет об ошибке не будет исправлен https://issues.apache.org/jira/browse/MNG-4565


Обновление:

это исправлено в 3.2.2 - sfussenegger (через комментарий)

13 голосов
/ 16 апреля 2013

И в худшем случае вы можете смешать условие другого типа, например, файл, jdk и свойство, как описано здесь http://www.sonatype.com/books/mvnref-book/reference/profiles-sect-activation.html,, но вы даже не можете поместить два условия одного типа, например два свойства

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

Это не будет работать, так как будет разрешен только один тег <property>. Ассоциированный JIRA: https://issues.apache.org/jira/browse/MNG-3328

И ошибка, описанная выше, все еще открыта ... 5 лет это просто позор!

12 голосов
/ 12 июня 2014

Только что исправил я:)

Начиная с 3.2.2, он будет работать как положено: множественные условия будут ANDed

Ссылка - https://github.com/apache/maven/commits/master, поиск по MNG-4565

Зафиксировать URL - https://github.com/apache/maven/commit/c6529932f9e3efdfc86ed73f59a307a8f8b6ea5f

...