【发布时间】:2013-04-18 10:14:53
【问题描述】:
我正面临 continuum 发布的问题:准备阶段在 scm-check-modifications 步骤中失败并出现错误:
[错误] org.apache.maven.shared.release.ReleaseFailureException: 无法准备发布,因为您有本地修改: [pom.xml:修改]
我做了什么:
- 我将所有更改(*.java 和 pom.xml)提交到 SVN
- 我在 Continuum 中构建了项目
- 我启动了发布的准备工作。
我知道 scm-check-modifications 调用 ScmCheckModificationsPhase 类来验证与 SCM 上的内容相比没有本地更改。
我知道如果我只使用 Maven,如果有一些本地更改,或者本地代码和 SVN 之间的任何差异,例如,release:prepare 将不起作用,因为它首先检查修改;但是使用 Continuum,我不知道为什么它应该是本地代码和 SVN 存储库之间的差异?所以我不知道为什么 Continuum 中的 release:prepare 目标面临这个问题。
我的 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>
【问题讨论】:
-
你检查过命令行以外的命令行吗?
-
比较 pom.xml 中所做的修改可能会让您了解发生了什么。您能否将此信息添加到您的问题中?
-
@khmarbaise:实际上不,我需要为此安装 Tortoise,因为 Maven 会抱怨“svn”命令无法识别。你知道为什么 Continuum 会抱怨 SCM 和本地代码之间存在差异的问题吗?
-
是的,这是我公司的一个项目,他们使用的是CVS,我刚才提到了SVN作为例子。 @khmarbaise:你能改变你的最后一个帖子吗?它包含公司域,我在我的帖子中更改了它。谢谢。
-
"为什么 Continuum 会抱怨 SCM 和本地代码之间存在差异问题" - 因为 maven-release-plugin 调用 maven-scm-plugin 进行修改检查。每个提供者都有不同的实现。所以你可以检查 continuum impl 与另一个有效的...可能在构建过程中 Continuum 更改了 pom.xml 中的某些内容(甚至是空格)?
标签: maven maven-release-plugin continuum