2011-01-07 5 views
39

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

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

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

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

ответ

39

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


Update:

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

+0

Я боялась, что будет ответ. Благодаря! :) – bhinks

+6

@bhinks это не имеет смысла, хотя. К сожалению, Maven: окончательное руководство говорит, что это поведение должно быть «И», но это не так. – Nishant

+0

такой позор, и больше importanlty. все еще не разрешено. – Mysterion

11

и худшем случае вы можете смешать состояние различного типа для примера файла, 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>. Associated JIRA: https://issues.apache.org/jira/browse/MNG-3328

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

+1

7 лет! Просто проголосовал за это. Не думайте, что это что-то изменит. – jFrenetic

+2

8 лет тем временем ... – jox

+2

9 лет и считая. –

9

Просто фиксируется меня :)

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

операция AND

Reference - https://github.com/apache/maven/commits/master, поиск по MNG-4565

+4

Желание ИЛИ или И были оба варианта. К сожалению, OR был просто удален для AND. – mdo123

+0

@ mdo123, наверное, так должно быть, да. Должна быть хорошая идея внести свой вклад как-то в maven – Mysterion

+0

Можете ли вы предоставить фактический URL-адрес фиксации (на основе хеширования фиксации)? Теперь, через 3,5 года, было бы много попыток пробиться! – Kidburla

Смежные вопросы