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

时间:2012-02-04 10:51:33

标签: file maven release local

我使用maven发布插件。在我的pom exists和Ant任务中,它会自动修复一些带有附加信息的属性文件。此修复程序不应该在SCM中。 但maven没有成功完成错误:

Cannot prepare the release because you have local modifications 

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

感谢。

6 个答案:

答案 0 :(得分:30)

我对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>

答案 1 :(得分:3)

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

Cannot prepare the release because you have local modifications 

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

@AndrewLogvinov的答案就在那里。 The other half is mentioned in this

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

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

答案 4 :(得分:1)

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

答案 5 :(得分:0)

就我而言,它在Windows上可以通过将作业名称重命名为较短的长度(约20个字符)来实现。

就我而言,詹金斯的工作名称和svn分支名称都更长(约40个字符)。 如果某些文件路径太长,则会导致Maven-release-plugin抱怨本地修改。詹金(Jenkin)用工作名称

创建一个本地工作区

例如对于以下内容,Jenkins在发布时的工作将开始抱怨本地修改。

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