Maven:针对不同目标的不同配置
我想为Maven的发布插件的不同目标提供不同的配置选项。故事是这样的:Maven:针对不同目标的不同配置
我使用Git的SCM。我想要发行版:准备插件在本地执行所有操作,释放:执行将所有更改一次推送到远程存储库。
我试着做这样的事情:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.2.2</version>
<executions>
<execution>
<id>release-prepare</id>
<configuration>
<pushChanges>false</pushChanges>
</configuration>
<goals>
<goal>prepare</goal>
</goals>
</execution>
<execution>
<id>release-perform</id>
<configuration>
<localCheckout>true</localCheckout>
<pushChanges>true</pushChanges>
</configuration>
<goals>
<goal>perform</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-scm-plugin</artifactId>
<version>1.7-SNAPSHOT</version>
</dependency>
</dependencies>
</plugin>
的1.7快照版本需要localCheckout =真在所有的工作(http://jira.codehaus.org/browse/SCM- 662)如果有人想知道这件事。
随着上述所有配置选项中提到的设置被完全忽视,但是当我简单地指定这样的设置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.2.2</version>
<configuration>
<localCheckout>true</localCheckout>
<pushChanges>false</pushChanges>
</configuration>
<dependencies>
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-scm-plugin</artifactId>
<version>1.7-SNAPSHOT</version>
</dependency>
</dependencies>
</plugin>
它们适用于这两种版本:准备以及释放:执行这是不期望的结果。
编辑:
为了把事情说清楚:当我们使用Git供应链管理,我们希望让所有领导准备释放本地的,如果你把它也不是没有道理的操作考虑到本地Git存储库无论如何都是完整的repo。但是,当我们实际发布时,我们希望将所有更改推送到上游存储库,以便正确设置所有内容。
任何人都可以帮助我吗?
首先我必须说,在release:prepare目标期间,所有更改都将在SCM中完成,而不是在release:perform目标中完成。所以问题是为什么要以这样复杂(非maven)的方式来做到这一点?
只是为了扩展 - maven的第一条规则是你*不*以非maven的方式做事。它永远不值得。 – 2012-02-24 12:02:10
此外,发布:发布是一个目标 - 不是按照Maven定义的阶段... – 2012-02-24 12:05:39
@andrewcooke:设置插件提供的配置选项是一种非maven的做事方式?我没有完全掌握你所做的事情的意图。 – 2012-02-24 12:17:56
如果您需要更改,您必须在发布期间更改发布插件原因:执行(goal!)发布插件将检出项目的标记状态并调用其上的部署生命周期。所以这是行不通的。
编辑: 我已经检查了一个Git项目,并做了一个发布,它就像我解释。在发布期间:准备目标变更将被推送到远程存储库。在发布期间:执行目标不会将任何内容推送到远程存储库,只会执行克隆来检出标记的版本。
你介意分享你使用的插件版本吗?我在mvn发布时正在观察推送权:准备。另外我使用Maven版本2.2.1 - 这可能是一个Maven版本问题? – 2012-02-24 15:34:43
Ah ..sorry没有添加信息发布插件版本2.2.2,如果您使用的是Maven 2.2.1,您应该在您的pom或您的父pom中添加一个pluginManagement区域并定义发布版本。此外推出期间的推动:准备目标是好的。 – khmarbaise 2012-02-24 15:36:29
呃..在发布过程中推送:准备就是我想要不发生的事情 - 因此所有的配置模糊。 – 2012-02-26 11:16:52
你能解释一下多一点的要求来理解你的愿望吗? – khmarbaise 2012-02-24 12:10:49