maven release plugin忽略releaseProfile

时间:2010-07-20 15:59:37

标签: maven-2

我正在使用两个配置文件:开发和生产。

开发应该在默认情况下处于活动状态;在我释放时应该使用生产。

在我的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参数覆盖。强制发布插件使用“生产”配置文件会很好。

4 个答案:

答案 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>