手把手教你如何将项目发布到Maven中央仓库(附步骤及常见问题解决方法)
业余时间写了个轻量级的权限控制框架 light-security ,并发布到了 Maven
中央仓库。发布时的操作步骤还挺多,我这个记性是记不住的,所以记录一下,便于以后查阅,也希望对大家有帮助。
一、Sonartype相关准备工作
前往 https://issues.sonatype.org/ 注册账号,并记好账号和密码,后面有用。
前往 https://issues.sonatype.org/secure/Dashboard.jspa ,点击导航栏上的
Create
按钮,并按提示填写项目信息:个人为项目
light-security-spring-boot-starter
填写的信息如 https://issues.sonatype.org/browse/OSSRH-47914 所示,供大家参考。创建
Issue
后,等待审核即可。一般会在一个工作日内审核完成。当Issue的Status变为RESOLVED
或FIXED
后,即可进行下一步操作。
二、GPG相关准备工作
2.1 安装GPG
Mac安装GPG:
1 | brew install gpg |
Ubuntu安装GPG:
1 | sudo apt-get install gnupg |
2.2 GPG常用命令
1 | gpg --version 检查安装成功没 |
2.3 生成秘钥
1 | gpg --gen-key |
如果遇到问题,可详见”遇到的问题一节”。
2.4 查看本地秘钥
1 | gpg --list-keys |
结果类似如下:
1 | ➜ ~ gpg --list-keys |
三、配置Maven
TIPS
可参考官方文档配置
https://central.sonatype.org/pages/apache-maven.html
1 修改项目的pom.xml,添加如下内容:
1 | <licenses> |
可参考我的配置:https://github.com/eacdy/light-security/blob/master/light-security-spring-boot-starter/pom.xml
2 修改 $MAVEN_HOME/conf/settings.xml
文件(即你的Maven配置文件),添加如下内容:
1 | <server> |
四、修改项目版本
用如下命令,修改项目的版本,例如1.0.1-RELEASE
。
1 | mvn versions:set -DnewVersion=1.0.1-RELEASE |
当然也可手动修改版本,不过当项目比较复杂,module比较多时,手动修改就会比较麻烦,而且容易出错。建议用命令修改。
五、发布
执行如下命令即可将依赖发布到中央仓库。
1 | mvn clean install deploy -P release |
不出意外,构建会报xxx服务器无法找到GPG的异常。原因是前文生成的秘钥尚未发布到key server。keyserver的地址会在异常中打印出来。我的项目报的是 http://keys.gnupg.net:11371/
。于是执行
1 | gpg --keyserver http://keys.gnupg.net:11371/ --send-keys [xxxxxxxxx] |
然后再次执行如下命令:
1 | mvn clean install deploy -P release |
此时即可发布成功。发布完使用如下命令重置为SNAPSHOT版本
1 | mvn versions:set -DnewVersion=1.0.2-SNAPHOST |
六、遇到的问题
6.1 执行 gpg --gen-key
报 Key generation failed: Timeout
的异常
解决方案:
1 | rm -rf ~/.gnupg |
6.2 执行mvn clean install deploy -P release
时,报gpg: signing failed: Inappropriate ioctl for device
原因是当前终端无法弹出密码输入页面。
解决方案:
1 | export GPG_TTY=$(tty) |
6.3 连不上 https://oss.sonatype.org
- 科学上网(在某些城市有被查水表、罚款的风险),自己找梯子吧;
- 飞到香港、澳门或者海外等能没有墙的地方,然后发布应用,发布完再回国(一种人傻钱多的方式);
- 移民(更彻底的解决方案,但如果想看抗日神剧或者听某些国内音乐,可能要用梯子翻回来)……
TIPS
如果你在发布时遇到其他问题,也可添加我的微信
jumping_me
,我尽量帮助到你。
七、参考文档
- 官方文档
- 如何发布jar包到maven中央仓库
- 发布项目至maven中央仓库汇总(流程+问题)
- 向maven中央仓库提交jar
- gpg: signing failed: Inappropriate ioctl for device
- Git 生成GPG key 报错
Key generation failed: Timeout
的解决方法
评论系统未开启,无法评论!