【问题标题】:Maven release:prepare : Cannot prepare the release because you have local modificationsMaven release:prepare :无法准备发布,因为您有本地修改
【发布时间】:2013-04-18 10:14:53
【问题描述】:

我正面临 continuum 发布的问题:准备阶段在 scm-check-modifications 步骤中失败并出现错误:

[错误] org.apache.maven.shared.release.ReleaseFailureException: 无法准备发布,因为您有本地修改: [pom.xml:修改]

我做了什么:

  1. 我将所有更改(*.java 和 pom.xml)提交到 SVN
  2. 我在 Continuum 中构建了项目
  3. 我启动了发布的准备工作。

我知道 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


【解决方案1】:

这只是错误的解决方法。我在使用 maven-release 插件版本 2.5.3 时遇到了同样的错误,只是使用 maven-release 2.3.2 对错误进行了排序

【讨论】:

    【解决方案2】:

    对我来说,解决方案是暂存并提交 pom.xml 或任何其他更改的文件来推送 git

    【讨论】:

      【解决方案3】:

      我可以确认,添加插件或将其配置为排除 pom.xml 检查确实有效:

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-release-plugin</artifactId>
        <configuration>
          <checkModificationExcludes>
              <checkModificationExclude>pom.xml</checkModificationExclude>
          </checkModificationExcludes>
        </configuration>
      </plugin>
      

      【讨论】:

        【解决方案4】:
        <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-release-plugin</artifactId>
        <configuration>
            <checkModificationExcludes>
                <checkModificationExclude>pom.xml</checkModificationExclude>
                <checkModificationExclude>**</checkModificationExclude>
            </checkModificationExcludes>
        </configuration>
        

        【讨论】:

          【解决方案5】:

          对于不想更改 pom.xml 的每个人来说,命令行选项都可以解决问题:

          mvn [...] -DcheckModificationExcludeList=pom.xml,.maven/spy.log

          我在我们的 hudson / jenkins CI 环境中遇到了问题,它抱怨 .maven/spy.log 的变化

          【讨论】:

            【解决方案6】:

            从源代码管理中删除我的项目的 target 文件夹为我解决了这个问题。

            【讨论】:

            • 附带说明,maven 的 target 文件夹永远不应保存在 SCM 中,因为它是 maven 生成中间和最终构建工件的地方。
            猜你喜欢
            • 2011-08-23
            • 2017-01-17
            • 1970-01-01
            • 1970-01-01
            • 2020-10-08
            • 2012-10-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多