Jenkins maven项目无视"目标和选项"在项目中指定" Build"部分

时间:2015-10-14 12:09:07

标签: maven jenkins

我的系统版本如下:

  • Jenkins ver。 1.633
  • Ubuntu版本14.04.2 LTS
  • Maven版本3.0.5

我已在"管理Jenkins" - >"配置系统"下配置了Maven设置。

当我创建一个"调用顶级Maven目标"进入"预备步骤"一切都按预期工作。在"目标"我可以指定" -X","清理安装"等等,并且maven通过打印选择此目标,例如:

  

[DEBUG]从... / settings.xml中读取全局设置

     

[DEBUG]从... / settings.xml

中读取用户设置      

[DEBUG]在... / repository

使用本地存储库

当我在"目标和选项"中设置相同的目标(例如-X)时"构建部分的输入字段"我只得到以下Jenkins控制台输出:

  

解析POM错误:无法解析POM   org.apache.maven.project.ProjectBuildingException:有些问题   处理POM时遇到:[致命]不可解析的父级   POM:找不到nl.icscards:ics-build-parent:pom:1.1.8 in   http://repo.maven.apache.org/maven2被缓存在当地   存储库,在更新之前不会重新尝试解析   中心间隔已经过去或强制更新   ' parent.relativePath'指向错误的本地POM @第6行,第10列

     

在   org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:364)     在hudson.maven.MavenEmbedder.buildProjects(MavenEmbedder.java:361)     在hudson.maven.MavenEmbedder.readProjects(MavenEmbedder.java:331)     在   hudson.maven.MavenModuleSetBuild $ PomParser.invoke(MavenModuleSetBuild.java:1301)     在   hudson.maven.MavenModuleSetBuild $ PomParser.invoke(MavenModuleSetBuild.java:1098)     在hudson.FilePath.act(FilePath.java:991)处   hudson.FilePath.act(FilePath.java:969)at   hudson.maven.MavenModuleSetBuild $ MavenModuleSetBuildExecution.parsePoms(MavenModuleSetBuild.java:960)     在   hudson.maven.MavenModuleSetBuild $ MavenModuleSetBuildExecution.doRun(MavenModuleSetBuild.java:679)     在   hudson.model.AbstractBuild $ AbstractBuildExecution.run(AbstractBuild.java:537)     在hudson.model.Run.execute(Run.java:1741)at   hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:531)at at   hudson.model.ResourceController.execute(ResourceController.java:98)     在hudson.model.Executor.run(Executor.java:408)完成:失败

我希望通过指定" -X"是调用信息的方式与调用"调用顶级Maven目标时的方式相同。作为像我上面所示的预建步骤。

请注意,如果我创建一个" Freestyle项目"而不是" Maven项目"并执行一个表单

的shell语句

cd <job_workspace> mvn -X clean install

同样在这种情况下,我可以看到预期的输出。

对我的&#34; Maven项目可能出错的任何建议&#34;詹金斯配置? 提前感谢您的回复。

1 个答案:

答案 0 :(得分:0)

原来问题是maven无法找到父pom,这是对项目的外部依赖。

奇怪的是,Maven Jenkins项目甚至在maven可以打印调试信息之前尝试获取这些依赖项,例如它在jenkins控制台上使用的设置文件。因此它失败了,但很难猜出问题是什么。我认为它无法选择正确的存储库路径或正确的settings.xml文件。

在我的情况下,问题是在存储库中的父pom依赖项中我有一个文件

parent.pom.lastUpdated

包含一行:

http\://<private-VPN-host>/repo/repo-central/.lastUpdated=1439803113007

从jenkins服务器,我无法访问私有VPN主机,因此它失败了。删除该文件或上面的行可以解决问题。 正确地拾取依赖关系并正确构建maven项目。

相关问题