плагин 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>