我正面临连续体发布的问题:准备阶段在scm-check-modification步骤中失败并出现错误:
[ERROR] org.apache.maven.shared.release.ReleaseFailureException: 无法准备发布,因为您有本地修改: [pom.xml中:改性]
我做了什么:
我知道scm-check-modification调用ScmCheckModificationsPhase类来验证与SCM上的内容相比没有本地更改。
我理解如果我只使用Maven,如果有一些本地更改,或本地代码和SVN之间的任何差异,例如,release:prepare将不起作用,因为它首先检查修改;但是使用Continuum,我不知道为什么它应该是本地代码和SVN存储库之间的差异?所以我不知道为什么发布:Continuum的准备目标正面临着这个问题。
我的pom示例:
<build>
<plugins>
...
<plugin>
<artifactId>maven-release-plugin</artifactId>
<configuration>
<useReleaseProfile>false</useReleaseProfile>
</configuration>
</plugin>
...
</plugins>
</build>
<scm>
<connection>scm:cvs:ext:url:/var/cvs:application_name</connection> <developerConnection>scm:cvs:ext:url:/var/cvs:application_name</developerConnection>
</scm>
.....
</project>
在父pom.xml中:
...
<pluginManagement>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.2.2</version>
<configuration>
<useReleaseProfile>false</useReleaseProfile>
<goals>deploy</goals>
<arguments>-Prelease</arguments>
</configuration>
</plugin>
.....
有关信息,项目的构建和发布始终正常,直到现在。
有一个绕道解决方案解决了我的问题,但我仍然想了解这个问题的根源。
旁路解决方案:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.2.2</version>
<configuration>
...
<checkModificationExcludes>
<checkModificationExclude>pom.xml</checkModificationExclude>
</checkModificationExcludes>
</configuration>
</plugin>
答案 0 :(得分:14)
我可以确认,添加插件或对其进行配置以排除pom.xml
检查确实有效:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<configuration>
<checkModificationExcludes>
<checkModificationExclude>pom.xml</checkModificationExclude>
</checkModificationExcludes>
</configuration>
</plugin>
答案 1 :(得分:7)
从源代码管理中删除我的项目target
文件夹为我解决了这个问题。
答案 2 :(得分:3)
对于不想更改pom.xml
命令行选项的每个人都可以做到这一点:
mvn [...] -DcheckModificationExcludeList=pom.xml,.maven/spy.log
我在hudson / jenkins CI环境中遇到了问题,抱怨.maven/spy.log
答案 3 :(得分:1)
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<configuration>
<checkModificationExcludes>
<checkModificationExclude>pom.xml</checkModificationExclude>
<checkModificationExclude>**</checkModificationExclude>
</checkModificationExcludes>
</configuration>
答案 4 :(得分:1)
对我来说,解决方案是暂存并提交pom.xml或任何其他更改的文件以推送git
答案 5 :(得分:0)
这只是错误的解决方法。我在使用Maven-release插件2.5.3时遇到了同样的错误,并使用Maven-release 2.3.2对该错误进行了排序