Maven 无法在 jenkins 解析 POM
Posted
技术标签:
【中文标题】Maven 无法在 jenkins 解析 POM【英文标题】:Maven fails to parse POMs at jenkins 【发布时间】:2014-04-22 09:10:22 【问题描述】:我有一个简单的 maven 项目,其中包含一些常用的测试工具。 它在本地构建,但在 jenkins 上我遇到了这个奇怪的错误(见下文)。
其他信息:
它使用 maven 在本地构建 设置与我们所有其他 jenkins 项目相同(非常基本) 其他 jenkins 构建工作正常 我尝试删除 /root/.jenkins/workspace/testtools 文件夹 我尝试删除构建并给它一个新名称 磁盘未满 我未能在其他地方找到有关此特定问题的任何有用信息。**
Parsing POMs
ERROR: Failed to parse POMs
hudson.maven.MavenEmbedderException: 1 problem was encountered while building the effective settings
[FATAL] Non-readable settings /root/.jenkins/workspace/testtools: /root/.jenkins/workspace/testtools (Is a directory) @ /root/.jenkins/workspace/testtools**
at hudson.maven.MavenEmbedder.<init>(MavenEmbedder.java:128)
at hudson.maven.MavenEmbedder.<init>(MavenEmbedder.java:109)
at hudson.maven.MavenEmbedder.<init>(MavenEmbedder.java:136)
at hudson.maven.MavenUtil.createEmbedder(MavenUtil.java:212)
at hudson.maven.MavenModuleSetBuild$PomParser.invoke(MavenModuleSetBuild.java:1254)
at hudson.maven.MavenModuleSetBuild$PomParser.invoke(MavenModuleSetBuild.java:1058)
at hudson.FilePath.act(FilePath.java:909)
at hudson.FilePath.act(FilePath.java:882)
at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.parsePoms(MavenModuleSetBuild.java:920)
at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.doRun(MavenModuleSetBuild.java:652)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:586)
at hudson.model.Run.execute(Run.java:1603)
at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:506)
at hudson.model.ResourceController.execute(ResourceController.java:88)
at hudson.model.Executor.run(Executor.java:247)
Caused by: hudson.maven.MavenEmbedderException: 1 problem was encountered while building the effective settings
[FATAL] Non-readable settings /root/.jenkins/workspace/testtools: /root/.jenkins/workspace/testtools (Is a directory) @ /root/.jenkins/workspace/testtools
at hudson.maven.MavenEmbedder.getSettings(MavenEmbedder.java:261)
at hudson.maven.MavenEmbedder.buildMavenExecutionRequest(MavenEmbedder.java:157)
at hudson.maven.MavenEmbedder.<init>(MavenEmbedder.java:120)
... 14 more
Caused by: org.apache.maven.settings.building.SettingsBuildingException: 1 problem was encountered while building the effective settings
[FATAL] Non-readable settings /root/.jenkins/workspace/testtools: /root/.jenkins/workspace/testtools (Is a directory) @ /root/.jenkins/workspace/testtools
at org.apache.maven.settings.building.DefaultSettingsBuilder.build(DefaultSettingsBuilder.java:116)
at hudson.maven.MavenEmbedder.getSettings(MavenEmbedder.java:259)
... 16 more
Finished: FAILURE
【问题讨论】:
能否检查是否有权限读取设置文件/访问目录等? 不要让你的 jenkins 在 root 下运行,最好使用不同的用户,比如jenkins
;-)...
Jenkins 以 root 身份运行,因此应该可以访问这些文件。 - 是的,我同意 jenkins 不应该以 root 身份运行,我们会解决这个问题,但这不会影响我当前的问题。
【参考方案1】:
Maven 尝试读取/root/.jenkins/workspace/testtools
作为其用户设置文件(通常在/root/.m2/settings.xml
下)。由于这是一个目录,所以无法读取。
在Build -> Advanced... -> settings file
下检查您的作业配置,您似乎选择了Settings in file system
,没有任何价值。将此更改为“使用默认的 Maven 设置”,您就很好了。
【讨论】:
非常感谢。这是一个纯粹的菜鸟错误。 我们的 Jenkins 配置了 '.'作为默认设置提供程序的值。在此处修复它会使任何新项目的错误消失。【参考方案2】:这个问题是由 Jenkins Maven 插件中的a bug 引起的。更新到 2.15.1 以上的版本为我们解决了这个问题。
【讨论】:
【参考方案3】:在 Jenkins 中检查您的项目配置
Build -> Advanced... -> settings
这里将所有内容设置为默认值,一切顺利
【讨论】:
【参考方案4】:我在更改构建名称后遇到了问题,它包含一个空格字符。 'execute shell' 正在使用 $WORKSPACE 变量,但由于空间问题而无法正常工作。
【讨论】:
【参考方案5】:如果项目配置中没有使用 pom.xml 的完全限定路径名,则可能会触发此错误,例如
C:\Users\user1\workspace\WebdriverTest
不是完全合格的。这是一个是:C:\Users\user1\workspace\WebdriverTest\pom.xml
记下\pom.xml
【讨论】:
以上是关于Maven 无法在 jenkins 解析 POM的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 Maven 构建配置文件在 Jenkins 中构建
Proguard 混淆在使用 Maven 的 Jenkins 构建中失败 - 无法读取 classes.jar