Nexus仓库无组件显示求助:Jenkins上传后无法找到资产
确认Nexus仓库类型是否正确
你得确保pom.xml里配置的是hosted类型的仓库(比如maven2 hosted),代理仓库(proxy)仅用于拉取外部包、组仓库(group)是聚合其他仓库的,这两类都不能存储你上传的本地组件。核对pom.xml的distributionManagement配置
检查<url>是否完全匹配Nexus里目标仓库的访问路径,<id>要和Jenkins中Maven settings.xml里的server配置ID一致。比如Nexus仓库路径是http://你的Nexus地址/repository/你的hosted仓库名/,pom里的配置必须和这个完全对应。确认Maven部署命令和构件生成情况
你执行的是mvn deploy吗?如果只跑了mvn install,构件只会存到本地Maven仓库,不会传到Nexus。另外要确认项目确实生成了可部署的构件——比如JAR项目要保证<packaging>是jar,构建日志里能看到生成JAR文件的记录,避免因隐性构建失败导致无构件可传。检查Nexus用户权限
即使凭证正确,也要确保用户拥有目标hosted仓库的部署权限。进入Nexus的Security->Roles,找到用户所属角色,确认包含nx-repository-view-maven2-{仓库名}-add和nx-repository-view-maven2-{仓库名}-edit权限。排查Nexus存储状态
有时候Nexus的存储目录没有写入权限,或者磁盘空间已满,会导致构件上传日志显示正常但无法持久化。可以去Nexus的System->Storage查看存储状态,或者登录服务器检查存储目录的权限和磁盘使用情况。确认上传的仓库是否正确
可能不小心配置了多个hosted仓库,或者路径写错,导致构件传到了其他仓库。可以在Jenkins日志里找“Uploaded to {仓库地址}”的记录,复制路径直接在Nexus里访问,或者逐个检查所有hosted仓库的内容。区分SNAPSHOT和RELEASE仓库
如果项目版本号带-SNAPSHOT,要确保pom里配置的是snapshot类型的hosted仓库;正式版本要对应release仓库。Nexus默认会区分这两类仓库,传错位置就会看不到内容。
内容的提问来源于stack exchange,提问作者Furkan Meydan

