我正在使用两个配置文件:开发和生产。
开发应该在默认情况下处于活动状态;在我释放时应该使用生产。
在我的pom.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
时则不会。
你是如何实现这一目标的?
[UPDATE]:
我已经看到调试标志使用了我的生产配置文件,但也使用了开发配置文件,因为它是activeByDefault
。这不能被releaseProfile
参数覆盖。强制发布插件使用仅“生产”配置文件会很好。
答案 0 :(得分:15)
maven-release-plugin
documentation鼓励使用releaseProfiles
配置参数在发布过程中自动调用配置文件。
这比从命令行手动调用发布配置文件更好。原因之一是,发布中使用的配置文件将记录在pom.xml
中,并与标记的代码一起存储。这使得构建过程更容易理解,以后更容易重复,与项目最初发布的方式完全相同。
如果使用早于maven-release-plugin
的{{1}},请参阅此bug,以防止使用上述参数。
请注意,在多模块项目的情况下,您必须将“releaseProfiles”配置放在根pom中!有关详细信息,另请参阅this issue。
答案 1 :(得分:2)
我认为你应该通过一个属性来激活你的个人资料。
<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
答案 2 :(得分:1)
如果您选中"Introduction to Build Profiles",“停用个人资料”:
mvn groupId:artifactId:goal -P !profile-1,!profile-2
我猜您可以使用它来停用默认配置文件吗?
答案 3 :(得分:0)
这是一篇非常古老的帖子,但我最近才发现这个问题。当我将releaseProfiles设置为名为 release 的配置文件时,releaseProfile仅对我有用。任何其他配置文件都会出错。
示例代码:
<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>