从Jenkins运行Maven项目不会获取本地目录中的pom.xml

时间:2013-09-04 05:07:13

标签: maven jenkins

我在JDT1.7.0_21上的Apache Tomcat8.0内的Windows7服务器上运行Jenkins 1.529。

当我从命令行运行我的项目的mvn命令时(在包含项目签出的pom.xml的根目录中),它运行正常。

但是当我从Jenkins运行时,似乎找不到pom.xml位置上的C:\.jenkins\workspace\<myProject>,而是看到一些关于从互联网上下载一些pom.xml文件的消息

我无法理解为什么它不使用工作区目录中的pom.xml文件。

有谁知道可能导致这种情况的原因?

2 个答案:

答案 0 :(得分:1)

好的,我弄清楚出了什么问题。

当从Jenkins运行时,Maven从不同的位置获取用户设置,而不是从命令行运行时。

从Jenkins运行时,我可以在日志文件中看到这一行:

[DEBUG] Reading global settings from C:\Maven\apache-maven-3.1.0\conf\settings.xml
[DEBUG] Reading user settings from C:\.m2\settings.xml
[INFO] Scanning for projects...

当我从命令行运行mvn命令时,我看到了这个:

[DEBUG] Reading global settings from C:\Maven\apache-maven-3.1.0\bin\..\conf\settings.xml
[DEBUG] Reading user settings from C:\Users\<MyUserName>\.m2\settings.xml
[DEBUG] Using local repository at C:\Users\<MyUserName>\.m2\repository

问题是我在公司防火墙后面,所以当从Jenkins运行时它无法下载依赖项。我的C:\Users\<MyUserName>\.m2目录中有一个settings.xml文件,其中包含代理服务器的详细信息。

我将settings.xml复制到C:\.m2目录中,并且它现在可以下载依赖项并构建项目。

我想我唯一的问题是为什么Jenkins Maven插件不像Maven那样使用相同的.m2目录位置,但这是我现在需要处理的单独问题。

答案 1 :(得分:0)

我的猜测是Jenkins使用了正确的pom。下载的poms是你的依赖项(如你所知,在你自己的pom中声明)。很可能是因为Jenkins使用与命令行客户端不同的本地Maven存储库位置,因此必须再次下载所有内容。

您可以配置Jenkins应该使用Maven安装以及本地存储库所在的位置:

enter image description here