File 如何禁用maven发布插件检查本地修改?

File 如何禁用maven发布插件检查本地修改?,file,maven,release,local,File,Maven,Release,Local,我使用maven发布插件。在我的pom中,存在一个自动修复带有附加信息的某些属性文件的Ant任务。此修复程序不应位于SCM中。 但是maven并没有因为错误而成功: Cannot prepare the release because you have local modifications 是否可以将某些参数设置为不检查本地修改 谢谢。我对maven release插件不太熟悉,但我可以看到有一个checkModificationExcludes属性可供您使用。配置应该是这样的: <

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

Cannot prepare the release because you have local modifications 
是否可以将某些参数设置为不检查本地修改


谢谢。

我对maven release插件不太熟悉,但我可以看到有一个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.apache.maven.plugins
maven发布插件
2.2.2
...
文件1
目录1/文件2

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

@AndrewLogvinov的答案是一半

我发现比较 在org.apache.maven.shared.release.phase.ScmCheckModificationsPhase.execute()中 剥离路径并仅比较文件名。因此,我将pom改为忽略 而不是${thewholepath}/applications属性。 瞧,成功


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

我们试图运行jenkins发布的版本,但始终失败,并显示相同的消息

Cannot prepare the release because you have local modifications 
。。。这很奇怪,因为我们使用jenkins在发布之前检查并构建最新的源代码


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

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

在我的情况下,它通过将作业名称重命名为较短的长度(大约20个字符)在Windows上工作

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

e、 如下图所示,Jenkins在发布作业时会开始抱怨局部修改

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

您也可以执行**/org.eclipse.wst.validation.prefsw这段代码到底在做什么?它是否只跳过对这两个文件的验证,但仍然将它们包括在工件中,还是这些文件不包括在工件中?