Jenkins中POM文件不可读问题求助,已尝试多种解决方案
兄弟,你这个情况其实挺典型的——本地命令行跑mvn test完全正常,但Jenkins里就报POM不可读,说明问题肯定出在Jenkins的运行环境或者权限上,和项目本身、本地Maven/JDK没关系。结合你已经试过的操作,给你几个具体的排查方向:
先确认Jenkins运行用户的权限
你改了POM文件的权限,但要注意Jenkins服务一般是用专门的系统用户(比如jenkins)跑的,和你本地用的amh用户不是同一个。你可以登录Jenkins所在的服务器,切换到Jenkins用户(比如sudo su jenkins),然后手动去项目目录下执行cat pom.xml,看看能不能正常读取。如果提示权限不足,就得给Jenkins用户开放项目目录的读写权限,比如用sudo chown -R jenkins:jenkins /你的项目路径或者sudo chmod -R 755 /你的项目路径。检查Jenkins工作空间的POM文件是否存在
有时候Jenkins拉代码的时候可能出问题,导致工作空间里根本没有POM文件。你可以在Jenkins项目页面里点击「工作空间」,直接查看里面的文件结构,确认pom.xml是不是在正确的位置。如果是Git拉取的代码,还要看看拉取步骤有没有报错,比如有没有权限拉取仓库代码之类的。核对Jenkins的Maven配置
你说用了默认Maven配置,但还是要确认Jenkins里的Maven版本是不是3.5.3,和你本地的mvn -v输出一致。另外,Jenkins里的Maven settings.xml可能和本地的不一样,比如有没有配置特殊的仓库或者镜像,导致读取POM时出问题。你可以在「全局工具配置」里查看Maven的安装路径,必要时在构建步骤里指定使用你本地的settings.xml文件。一定要看Jenkins的完整报错日志
你只给了本地正常的日志,但Jenkins构建时肯定有具体的报错信息(比如是权限拒绝还是文件找不到),把完整的报错日志贴出来,能更快定位问题。比如如果是Caused by: java.io.FileNotFoundException: pom.xml (Permission denied),那就是权限问题;如果是Could not find POM in /var/lib/jenkins/workspace/xxx,那就是路径或者拉代码的问题。
附上你本地正常运行的日志:
junitexample amh$ mvn test [INFO] Scanning for projects... [INFO] [INFO] ----------------------< com.junit:junit-example >----------------------- [INFO] Building junit-example 1.0-SNAPSHOT...
内容的提问来源于stack exchange,提问作者marhg

