侧边栏壁纸
博主头像
Ivan Zhang

所谓更牛,就是换个罪受

  • 累计撰写 48 篇文章
  • 累计创建 54 个标签
  • 累计收到 6 条评论

目 录CONTENT

文章目录

手动上传 SNAPSHOT 到 Nexus 仓库

Ivan Zhang
2024-04-01 / 0 评论 / 0 点赞 / 710 阅读 / 2,349 字
温馨提示:
本文最后更新于 ,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
有什么问题或观点欢迎评论留言,或者 交流。
如果觉得文章对您有所帮助,可以给博主打赏鼓励一下。

背景

项目组一个生产项目,依赖了之前老版本的 snapshot 包,maven 仓库经过迁移,不知道是否做了 snapshot 删除策略或者人为删除,导致部分 snapshot 依赖包不存在,生产项目依赖 snapshop 版本运行稳定,原开发人员本地有旧 snapshot jar 包,不想冒替换 release 版本的风险,故需将 snapshot 版本上传到 maven 仓库,供后续开发人员拉取使用。

上传 SNAPSHOT 版本

1. Maven 环境准备

下载 maven 安装包,解压后配置好 path 环境变量。

2. 配置 maven 的 settings.xml

在 maven 安装目录找到 conf/settings.xml,在 settings 标签下配置以下内容。

settings.xml 需要放置在 ~/.m2/settings.xml~ 代表操作系统用户的 Home 目录,windows 下类似 C:\Users\Ivan

 <!-- 在 settings 标签下配置以下内容 -->
  <servers>
    <server>
      <!-- repositoryId,上传 SNAPSHOT jar 时需要指定此 id -->
      <id>snapshots</id>
      <!-- nexus 账号密码  -->
      <username>admin</username>
      <password>admin</password>
    </server>
  </servers>

3. 上传 Nexus3 本地 jar 和 pom.xml

管理员权限打开 cmd 命令窗口,cd 到在第三方 jar 包所在目录下,输入以下命令(如果打开的时 PowerShell ,键入 cmd 字符回车切换到 cmd 命令下执行脚本

  • 上传 jar 包和 pom 文件命令

其中行尾 ^ 未 cmd 命令行的换行符,相当于 Linux 里的 \

mvn deploy:deploy-file^
 -DgroupId=com.lizwei^
 -DartifactId=mrdoc^
 -Dversion=1.0.0-SNAPSHOT^
 -Dpackaging=jar^
 -Dfile=mrdoc-1.0.0-SNAPSHOT.jar^
 -DpomFile=mrdoc-1.0.0-SNAPSHOT.pom^
 -Durl=http://nexus.lizwei.com/repository/maven-snapshots/^
 -DrepositoryId=snapshots -X

有时候只需要上传 pom 文件(如 maven 父工程),使用以下命令即可

mvn deploy:deploy-file^
 -DgroupId=com.lizwei^
 -DartifactId=mrdoc^
 -Dversion=1.0.0-SNAPSHOT^
 -Dpackaging=pom^
 -Dfile=mrdoc-1.0.0-SNAPSHOT.pom^
 -Durl=http://nexus.lizwei.com/repository/maven-snapshots/^
 -DrepositoryId=snapshots -X
  • 命令参数简介
-DgroupId=com.lizwei                  # com.lizwei 为要上传的 jar 包 groupId
-Dversion=1.0.0-SNAPSHOT              # 1.0.0-SNAPSHOT 为要上传的 jar 包版本号
-Dpackaging=jar                       # 上传文件类型,pom 或者 jar
-Dfile=mrdoc-1.0.0-SNAPSHOT.jar       # mrdoc-1.0.0-SNAPSHOT.pom 为要上传的 jar 包 / pom 名称
-DpomFile=mrdoc-1.0.0-SNAPSHOT.pom    # 要上传的 pom 文件
-Durl=http://nexus.lizwei.com/repository/maven-snapshots/  # 远程 Nexus 私服仓库地址,可在 nexus web 浏览仓库页面,点击 copy URL 的按钮获取到
-DrepositoryId=snapshots              # nexus-snapshot 为我们第 2 步配置的本地 maven conf/settings.xml 文件中其中一个 server 的 id,nexus 上传 jar 需要用这种方式验证账号密码
-X                                    # debug 模式执行 mvn 命令,方便查看异常日志

4. 检查 nexus 的 maven-snapshots 仓库 jar 是否已上传成功

常见错误

[ERROR] The goal you specified requires a project to execute but there is no POM in this directory...

解决方案:

cmd 命令必须用管理员权限打开,如果打开的是 powershell,请输入 cmd 命令切换到 cmd 下执行

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy-file (default-cli) on project standalone-pom: Cannot deploy artifact from the local repository

解决方案:

不能在本地 maven 仓库中直接运行上传命令,jar 包需要挪动 .m2/repository 目录外上传

注意事项

上传本地 jar 包时最好同时上传对应的 pom 文件,否则 jar 包依赖不会传递

辅助工具

【腾讯文档】Nexus上传命令辅助工具
https://docs.qq.com/sheet/DT1JGeEdsSUxQcE9O?tab=BB08J2

参考链接

0

评论区