我想为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>
如果有人想知道,那么localCheckout = true需要1.7-SNAPSHOT版本(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 for SCM时,我们希望所有操作都能导致本地发布的准备,如果你考虑到本地Git存储库是一个非常合理的话无论如何都要成熟的回购。但是,当我们进行实际发布时,我们希望将所有更改推送到上游存储库,以便正确设置所有内容。
有人可以帮帮我吗?
答案 0 :(得分:0)
如果您需要更改,则必须在发布期间更改发布插件原因:执行(目标!)发布插件将检出项目的标记状态并在其上调用部署生命周期。所以这不起作用。
修改强> 我已经检查了Git项目,并对其进行了发布,正如我所解释的那样。在发布期间:准备目标将更改推送到远程存储库。在发布期间:执行目标不会将任何内容推送到远程存储库,只会执行克隆以检出标记的版本。
答案 1 :(得分:-1)
首先我必须说,在release:prepare目标期间,所有更改都将在SCM中完成,而不是在发布中:执行目标。所以问题是为什么要以这种复杂的(非专业的)方式来做呢?