Активация профиля на обоих релизах: подготовить и выпустить: выполнить - PullRequest
12 голосов
/ 03 апреля 2012

Я не могу найти решение для активации некоторого профиля Maven на release:prepare и release:perform (обе) цели.Примерно так:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-release-plugin</artifactId>
  <version>2.2.1</version>
  <configuration>
    <useReleaseProfile>false</useReleaseProfile>
    <goals>deploy</goals>
    <arguments>-Pmy-release</arguments>
  </configuration>
</plugin>

просто не работает.Я знаю, что настройка releaseProfiles работает только во время release:perform, поэтому я просто считаю, что настройка arguments - это именно то, что мне нужно, но профиль my-profile не активен во время выполнения.Я что-то не так делаю?

Ответы [ 4 ]

7 голосов
/ 03 апреля 2012

Это похоже на дубликат вопроса. Пожалуйста, посмотрите на этот вопрос, у него есть ответ. плагин maven release игнорирует releaseProfile

В основном версия 2.2.1 плагина релиза добавляет параметр releaseProfiles, который позволит вам определить профили, которые будут включены во время выпуска.

http://maven.apache.org/plugins/maven-release-plugin/examples/perform-release.html

К сожалению, похоже, что есть ошибка, которая не позволяет делать то, что вы хотите ...

Редактировать

В данном случае я использовал не аргумент -P, а запуск профиля через настройку среды с помощью -Denv=release. Затем в POM у меня активация профиля основана на значении env. Это всегда работало для меня.

6 голосов
/ 21 мая 2013

-Darguments = "- PmyProfile", кажется, делает эту работу.

6 голосов
/ 10 марта 2013

Поскольку плагин релиза maven запускает дополнительный экземпляр, вы должны указать дополнительные аргументы. Для тебя чехол

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-release-plugin</artifactId>
    <version>2.4</version>
    <configuration>
        <arguments>${myReleaseArgs}</arguments>
    </configuration>
</plugin>

и исполнение

mvn release:prepare release:perform -DmyReleaseArgs="-Pmy-release -DskipTests=true" -Pmy-release -DskipTests=true

и да, оно должно быть продублировано.

2 голосов
/ 23 апреля 2015

Он работает в Jenkins, активируя профиль для выпуска: подготовка и выпуск: выполнить, задав оба свойства

<build>
  <plugins>
    <plugin>
      <artifactId>maven-release-plugin</artifactId>
      <version>2.5.1</version>
      <configuration>
        <releaseProfiles>myprofile</releaseProfiles>
        <arguments>-Pmyprofile</arguments>
      </configuration>
    </plugin>
  </plugins>
</build >

Несмотря на то, что вышеописанное прекрасно работает, я нашел более полезным использовать профили, активированные файлами. Старая концепция с «основным» профилем вызывала проблему, так как у меня был профиль в моем родительском пом. Это означало, что он активировался в каждом модуле, произвольно.

Для ее решения я использовал метод активации файла в профиле. Он работает еще лучше и в качестве бонуса упрощает выпуск в Jenkins. В Eclipse, в командной строке, в Jenkins, то есть везде, maven обнаруживает файл, и плагин maven-release-plugin настраивать не нужно. Плюс профиль активен только в нужном модуле.

...