2

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

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

但是当我从 Jenkins 运行时,它似乎没有找到应有pom.xmlC:\.jenkins\workspace\<myProject>位置,而是看到一些关于从 Internet 下载一些 pom.xml 文件的消息。

我不明白为什么它不使用pom.xml工作区目录中的文件。

有谁知道这可能是什么原因?

4

2 回答 2

1

好的,我知道出了什么问题。

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

从 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 目录位置,但这是我现在需要处理的一个单独问题。

于 2013-09-04T23:07:36.773 回答
0

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

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

在此处输入图像描述

于 2013-09-04T05:55:18.493 回答