плагин Maven release игнорирует releaseProfile

я использую два профиля: разработка и производство.

разработка должна быть активна по умолчанию; производство должно использоваться, когда я выпускаю.

в моем пом.xml у меня есть:

[...]
<plugin>
<artifactId>maven-release-plugin</artifactId>
<version>2.0-beta-9</version>
<configuration>
  <useReleaseProfile>false</useReleaseProfile>
  <goals>deploy</goals>
  <arguments>-Pproduction</arguments>
</configuration>
</plugin>
[...]
<profiles>
  <profile>
    <id>production</id>
    <properties>
      <profile.name>production</profile.name>
    </properties>
    [...]
  </profile>
  <profile>
    <id>development</id>
    <activation>
      <activeByDefault>true</activeByDefault>
    </activation>
    <properties>
    <profile.name>development</profile.name>
    </properties>
       [...]
  </profile>
[...]

это просто не работает.
useReleaseProfiles не работает: http://jira.codehaus.org/browse/MRELEASE-459

профиль разработки должен быть всегда активен, но не при запуске mvn release:perform. Как вы достигаете это?

[обновление]: Я видел с флагом отладки, что мой профиль производства используется, но профиль разработки также используется, потому что это activeByDefault. Это не может быть отменено

4 ответов


на maven-release-plugin документация рекомендует использовать releaseProfiles параметр конфигурации для автоматического вызова профилей во время процесса выпуска.

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

при использовании maven-release-plugin старше 2.4 посмотреть этот ошибка предотвращение использования вышеупомянутого параметра.

имейте в виду, что в случае многомодульного проекта вам придется поместить конфигурацию "releaseProfiles" в корневой pom! См. также этот вопрос для получения дополнительной информации об этом.


Я думаю, вы должны просто активировать свои профили через свойство.

<profiles>
  <profile>
    <id>production</id>
    <activation>
      <property>
        <name>build</name>
        <value>release</value>
      </property>
    </activation>
    [...]
  </profile>
  <profile>
    <id>development</id>
    <activation>
      <property>
        <name>build</name>
        <value>develop</value>
      </property>
    </activation>
    [...]
  </profile>
<profiles>

делать свои сборки, выполнив что-то вроде этого

mvn -Dbuild=develop package
mvn -Dbuild=develop test

mvn -Dbuild=release release:prepare
mvn -Dbuild=release release:perform

Если вы проверяете "введение в построение профилей", "деактивировать профиль":

mvn groupId:artifactId:goal -P !profile-1,!profile-2

Я думаю, вы могли бы использовать это, чтобы деактивировать свой профиль по умолчанию?


Это очень старый пост, но я столкнулся с этой проблемой совсем недавно. ReleaseProfile работал только для меня, когда я установил releaseProfiles в профиль с именем релиз. Любой другой профиль дает ту же ошибку.

пример кода:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.5.3</version>
            <configuration>
                <tagNameFormat>@{project.artifactId}-@{project.version}</tagNameFormat>
                <autoVersionSubmodules>true</autoVersionSubmodules>
                <releaseProfiles>release</releaseProfiles>
                <allowTimestampedSnapshots>true</allowTimestampedSnapshots>
            </configuration>
        </plugin>
    </plugins>
</build>
<profiles>
    <profile>
        <id>release</id>
        <properties>
            <connectionUrl>${scm-base}/tags/${project.artifactId}-${project.version}</connectionUrl>
        </properties>
    </profile>
</profiles>