2010-07-20 91 views
8

我正在使用两个配置文件:开发和生产。maven发布插件忽略发布配置文件

默认情况下开发应该是活动的;生产应该在我释放时使用。

在我的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时。 你如何做到这一点?

[更新]: 我已经看到调试标志,我的生产配置文件被使用,但也使用开发配置文件,因为它是activeByDefault。这不能被releaseProfile参数覆盖。如果强制释放插件仅使用“生产”配置文件将会很好。

回答

13

maven-release-plugindocumentation

这是一种比从命令行手动调用发布配置文件更好的方法。原因之一是,因为发行版中使用的配置文件将记录在pom.xml中,并与标记的代码一起存储。这使得构建过程更容易理解,并且更容易重复,这与项目最初发布的方式完全相同。

如果使用maven-release-plugin旧于2.4请参阅bug阻止使用上述参数。

请注意,如果是多模块项目,您必须将“releaseProfiles”配置放入根目录中!有关更多信息,另请参阅this issue

+1

@editor,它更好地写出bug已经修复,在这里,作为一个评论。 – Arun 2013-01-29 20:30:59

+0

@Leif感谢有关此错误修复的更新! – devdanke 2014-02-07 07:13:41

+0

即使使用2.5.1,我仍然必须在CLI上手动指定我的配置文件“-Prelease”。 – 2015-03-26 19:46:08

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> 

做你建立使用releaseProfiles配置参数在释放过程中自动调用配置文件鼓励执行这样的事情

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

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

是的,我也已经知道,它可以设置这样的配置文件。但这种方式可以被忘记。如果您忘记了它,发布的软件包将包含错误的配置文件,并且部署将失败。我想强制发布插件只使用给定的配置文件。 – Janning 2010-07-25 15:14:06

+0

如果您在发布插件需要和使用的配置文件中定义一些属性,则不能忘记它。 – splash 2010-07-26 12:36:16

+0

我不明白你最后的评论。你能向我解释一下吗? – Janning 2010-07-30 21:50:08

0

这是一个很旧的帖子,但我最近碰到这个问题。当我将releaseProfiles设置为称为版本的配置文件时,releaseProfile仅适用于我。任何其他配置文件都会产生相同的错

示例代码:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-release-plugin</artifactId> 
      <version>2.5.3</version> 
      <configuration> 
       <tagNameFormat>@{project.artifactId}[email protected]{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>