Выбор профилей для проектов maven

У меня много проектов maven. У меня есть два разных глобальных файла settings.xml, которые мне нужно объединить. Оба они описывают свои репозитории внутри профилей. Я объединил два файла settings.xml по тегам зеркал и профилей. Один из профилей активируется тегом activeProfile в файле settings.xml.

Я хочу спросить вас, как я могу изменить активный профиль в разных проектах? Могу ли я выбрать его в файле проекта pom.xml?

Спасибо, Бр, Стристи


person user1360847    schedule 27.04.2012    source источник


Ответы (4)


В этом документе описывается, как можно активировать профили: Введение в создание профилей .

Вы можете активировать профили с помощью переменных среды, но если у вас много проектов и вы хотите применять профили для каждого проекта, то изменение переменной среды перед каждым выполнением сборки отдельного проекта является ошибочным решением. Если вы работаете с IDE, вы можете настроить конфигурацию запуска, чтобы установить свойство для каждого проекта, и вам необходимо настроить правильную команду запуска mvn в рамках непрерывной интеграции для каждого проекта. Однако это сделало бы невозможным создание агрегированной сборки, состоящей из разных проектов, которые должны быть активированы разными профилями.

Возможный обходной путь (который не кажется элегантным, но я почти уверен, что он сработает) — это активация профилей на основе наличия файлов и управление такими «файлами маркеров» для разных проектов для активации необходимого. Например:

<profiles>
  <profile>
    <activation>
      <file>
        <exists>.profile-A</exists>
      </file>
    </activation>
    ...
  </profile>
</profiles>

Ожидаемое поведение: этот профиль активируется, если файл с именем «.profile-A» существует в корневой папке проекта.

Однако тут возникает еще один интересный вопрос: как будет вести себя в случае агрегированной сборки?

person Art Licis    schedule 27.04.2012
comment
Я думал об этом же взломе, но не уверен, к чему вы клоните, спрашивая каким будет поведение в случае агрегированной сборки? - person Lucas; 02.07.2015

Похоже, вам нужно использовать диспетчер репозиториев (Archiva, Artifactory, Nexus в алфавитном порядке ), чтобы иметь единую конфигурацию в файле settings.xml. Это решит проблему зависимости вашей среды файлов сборки.

person khmarbaise    schedule 27.04.2012

Я предпочитаю этот способ в своих проектах:

<profile>
  <id>dev</id>
  <activation>
    <property>
      <name>env</name>
      <value>dev</value>
    </property>
  </activation>
  ...
</profile>

Затем вы можете активировать его следующим образом:

mvn your_goal -Denv=dev

С уважением,

Боскоп

person boskop    schedule 27.04.2012

вы можете просто добавить тег activeByDefault в свой профиль maven:

<profiles>
    <profile>
    <id>your-profile</id>
        <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
    </profile>
</profiles>
person devsnd    schedule 27.04.2012
comment
Да, как я уже писал, я активировал один из профилей по этому тегу, как вы описали. Но вопрос заключался в том, могу ли я установить его в файл pom.xml проекта, чтобы активировать разные профили для разных проектов? - person user1360847; 27.04.2012