执行mvn clean install时Sonatype Nexus无法导入自定义项目构件
激活Maven Profile
你配置的gels-nexusprofile仅完成定义,未激活的话Maven不会启用该配置。可以在settings.xml中添加激活节点:<activeProfiles> <activeProfile>gels-nexus</activeProfile> </activeProfiles>或者执行命令时手动指定激活:
mvn clean install -P gels-nexus验证自定义构件的存储状态
登录Nexus控制台进入my-parent-repo,确认自定义JAR已正确上传,且目录结构符合Maven规范:/groupId/artifactId/version/artifactId-version.jar(例如com/example/my-lib/1.0.0/my-lib-1.0.0.jar)。路径不符合规范的话,Maven无法定位到构件。检查组仓库的成员排序
在Nexus的my-group-repo配置页,查看成员仓库的顺序。组仓库会按配置顺序查找构件,若my-proxy-repo排在前面且存在同名构件(概率较低但需排查),会优先返回代理仓库内容。建议将my-parent-repo调整到靠前位置,或确认自定义构件在代理仓库中不存在。通过调试日志定位问题
执行带调试日志的构建命令:mvn clean install -X,搜索自定义构件的坐标(如com.example:my-lib:1.0.0),查看Maven发起的请求URL,确认是否请求了组仓库,以及返回的状态码(404表示构件不存在,401/403表示权限不足)。验证Nexus仓库的权限配置
检查my-parent-repo的权限设置,确保当前访问用户(含匿名用户)拥有读取权限。若Nexus启用了认证,需在settings.xml的servers节点添加对应账号密码:<servers> <server> <id>gels-nexus</id> <username>你的Nexus账号</username> <password>你的Nexus密码</password> </server> </servers>排查镜像配置的冲突
你的镜像mirrorOf设为*,会代理所有仓库请求,但需确认my-group-repo确实包含my-parent-repo,且项目pom.xml中没有其他优先级更高的仓库配置干扰。
内容的提问来源于stack exchange,提问作者Joe jonas

