Jenkins构建的带依赖Jar包本地解压报错,本地打包无异常
解决Jenkins构建Jar包本地解压权限报错问题
我之前碰到过几乎一模一样的情况,给你几个实际可行的排查和解决方向:
Jenkins构建时的权限遗留问题
Jenkins运行的服务用户(比如Linux下的jenkins用户、Windows下的Local System账户)在打包Jar时,可能给META-INF/maven下的目录或文件设置了本地普通用户无法访问的权限。
解决办法:- 若Jenkins部署在Linux环境,在构建步骤后新增一个执行命令的步骤,运行
chmod -R 755 ${project.build.directory}/${project.build.finalName}.jar,确保Jar包本身的权限对普通用户可读; - 如果用Maven Assembly插件打包,直接在assembly的descriptor配置文件里统一设置文件和目录权限:
<fileSets> <fileSet> <directory>${project.build.outputDirectory}</directory> <outputDirectory>/</outputDirectory> <fileMode>0644</fileMode> <directoryMode>0755</directoryMode> </fileSet> <!-- 依赖打包的模块也需要添加对应的fileSet权限配置 --> </fileSets>
- 若Jenkins部署在Linux环境,在构建步骤后新增一个执行命令的步骤,运行
Jar包传输或构建过程中损坏
有时候Jenkins构建完成后,Jar包在下载到本地的过程中出现丢包,或者构建日志里存在隐藏的打包警告/错误,导致Jar包本身不完整。
解决办法:- 对比本地Maven打包的Jar和Jenkins下载的Jar的MD5哈希值,若不一致则重新下载Jenkins的Jar包;同时检查Jenkins构建日志里的Maven输出,确认打包过程是否完全成功。
Windows长路径限制问题
虽然你说权限没问题,但Windows默认的260字符路径长度限制,可能会导致META-INF/maven这类深层嵌套目录无法被正常访问,尤其是当解压目录本身路径较长时。
解决办法:- 把Jar包移动到路径更短的目录下解压(比如直接放到
C:\temp); - 开启Windows的长路径支持:通过组策略启用“启用Win32长路径”,或者修改对应注册表项(优先尝试短路径方案更快捷)。
- 把Jar包移动到路径更短的目录下解压(比如直接放到
本地安全软件拦截
部分杀毒软件或Windows Defender会把Jenkins构建的带依赖胖Jar里的某些文件误判为可疑项,直接阻止了你的访问操作。
解决办法:- 临时关闭杀毒软件尝试解压,如果成功,就把解压目录或Jenkins下载的Jar包加入安全软件的白名单。
内容的提问来源于stack exchange,提问作者Infinite
相关产品推荐
相关产品推荐

