【问题标题】:How to disable maven release plugin check local modifications?如何禁用 Maven 发布插件检查本地修改?
【发布时间】:2012-02-26 18:13:34
【问题描述】:

我使用 Maven 发布插件。在我的 pom 中存在和 Ant 任务,它使用附加信息自动修复一些属性文件。此修复不应该在 SCM 中。 但是 maven 并没有因为错误而成功:

Cannot prepare the release because you have local modifications 

是否可以设置一些参数不检查本地修改?

谢谢。

【问题讨论】:

    标签: file maven release local


    【解决方案1】:

    我对 maven-release-plugin 不是很熟悉,但我可以看到有一个 checkModificationExcludes 属性可以用于您的目的。配置应该有点像这样:

    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-release-plugin</artifactId>
      <version>2.2.2</version>
      <configuration>
        ...
        <checkModificationExcludes>
          <checkModificationExclude>file_1</checkModificationExclude>
          <checkModificationExclude>dir_1/file_2</checkModificationExclude>
        </checkModificationExcludes>
      </configuration>
    </plugin>
    

    【讨论】:

    • 你也可以做**/org.eclipse.wst.validation.prefs
    • 这个 sn-p 到底在做什么?它是否只跳过对这两个文件的验证但仍将它们包含在工件中,或者这些文件不会包含在工件中?
    【解决方案2】:

    我们试图从 jenkins 运行发布,但它总是失败并显示相同的消息...

    Cannot prepare the release because you have local modifications 
    

    ...这很奇怪,因为我们使用 jenkins 在发布之前检查并构建最新的源代码。

    我们最终发现问题在于我们在 Windows 节点上构建,并且某些文件路径太长导致 maven-release-plugin 抱怨本地修改。切换到 linux 节点解决了这个问题。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        我建议修复您的构建过程,以便它不会“修复” SCM 下的文件。有几种方法可以做到这一点,最简单的是将有问题的属性文件复制到${project.build.outputDirectory} 下的某个目录,然后在这些文件上运行您的 Ant 脚本,而不是原始文件

        【讨论】:

          【解决方案5】:

          @AndrewLogvinov 的回答已经完成了一半。 The other half is mentioned in this:

          我发现比较 在 org.apache.maven.shared.release.phase.ScmCheckModificationsPhase.execute() 剥离路径并仅比较文件名。所以,我改变我的pom忽略 application.properties 而不是 ${thewholepath}/applications 属性。 瞧,成功了。

          由于某些奇怪的原因,您不能在此标记中包含路径。您只能指定文件名。

          【讨论】:

            【解决方案6】:

            在我的例子中,它通过将作业名称重命名为更短的长度(大约 20 个字符)在 Windows 上运行。

            在我的例子中,Jenkins 的工作名称和 svn 分支名称更长(大约 40 个字符)。 如果某些文件路径太长,它会导致 maven-release-plugin 抱怨本地修改。 Jenkins 使用作业名称创建一个本地工作区

            例如如下所示,发布时 Jenkins 工作将开始抱怨本地修改。

            D:\dev.env\data\jenkins\jobs\<LongerJobName>\workspace\<LongerBranchName>\testCommonJar\src\main\java\com.example.webservice.service.TestServiceImpl.java
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2021-04-17
              • 2017-01-17
              • 2013-01-16
              • 1970-01-01
              • 2021-11-10
              • 2011-06-18
              • 1970-01-01
              • 2015-04-21
              相关资源
              最近更新 更多