Подтвердить что ты не робот

Активация профиля Maven с несколькими условиями

Я работаю над настройкой плагина 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/> и получаю результаты, которые хочу, но для будущих ссылок есть лучший способ создания профилей с несколькими условиями активации?

4b9b3361

Ответ 1

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


Update:

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

Ответ 2

И в худшем случае вы можете смешивать состояние другого типа, например файл, 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 лет это просто позор!

Ответ 4

Я думаю, что это то, что делают эти расширения Maven:

Однако, поскольку это расширение (а не плагин), каждый проект, использующий его, должен будет зарегистрировать расширение. И есть риск, что автор проекта откажется от него, и он не будет работать в будущих версиях Maven.