File 如何禁用maven发布插件检查本地修改?
我使用maven发布插件。在我的pom中,存在一个自动修复带有附加信息的某些属性文件的Ant任务。此修复程序不应位于SCM中。 但是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属性可供您使用。配置应该是这样的: <
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这段代码到底在做什么?它是否只跳过对这两个文件的验证,但仍然将它们包括在工件中,还是这些文件不包括在工件中?