Как деактивировать профиль maven в дочернем модуле?

#java #maven-2 #maven

#java #maven-2 #maven

Вопрос:

У меня есть профиль, определенный в родительском pom.xml и активированный свойством. В дочернем модуле мне нужно деактивировать его. Как это можно сделать (это Maven 3)?

ps. Насколько я знаю, это невозможно сделать юридически (MNG-4565, MNG-5083), но каков возможный обходной путь?

Ответ №1:

Это зависит. Дочерние pom не должны запрещать поведение родительского pom (это похоже на LSP для процесса сборки). Возможно, было бы неплохо определить профиль в родительском pom, но активировать его только в дочерних pom, где это действительно необходимо.

Если вы не можете этого сделать, вы могли бы активировать профиль в родительском pom с помощью свойства с точным значением:

 <profiles>
  <profile> 
    <activation>
      <property>
        <name>environment</name>
        <value>test</value>
      </property>
    </activation>
  </profile>
</profiles>
  

а затем переопределите значение свойства в дочернем pom.

Комментарии:

1. Переопределение свойства в дочернем модуле pom.xml не будет иметь никакого эффекта, поскольку Maven создает эффективный pom перед чтением его свойств.