Maven发布:准备:由于您进行了本地修改,因此无法准备发布

时间:2013-04-24 18:05:53

标签: maven maven-release-plugin continuum

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

  

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

我做了什么:

  1. 我将所有更改(* .java和pom.xml)提交到SVN
  2. 我在Continuum
  3. 中构建了这个项目
  4. 我发布了该版本的准备工作。
  5. 我知道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>
    

6 个答案:

答案 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对该错误进行了排序