博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Maven中央仓库发布历程
阅读量:4031 次
发布时间:2019-05-24

本文共 5460 字,大约阅读时间需要 18 分钟。

一、前言

最近自己在学习Spring boot的过程中开发了一个组件 ,通过这个组件,我们可以动态根据配置文件进行多个线程池的初始化。既然有这个产出后,肯定是希望能够上传到maven中央仓库,给更多的人使用,于是就产生了这次项目发布经历。

整个过程可谓是一波三折,由于平时工作比较忙只能晚上花一个小时搞,所以在经历了近一周的时间后,终于成功发布上去了。

下面把我当时的上传过程记录下来,希望帮助更多的朋友。

 

二、环境准备

1> mac osx 10.14.6 : 本文主要以mac环境为准

2> Apache Maven 3.2.3 : 本文主要使用maven进行构建和发布例子的说明

 

三、步骤说明

1、工单创建

1> 访问sonatype并注册账号  ,注意要记住账号密码,会用于我们后续的发布及相关操作

2> 如图新建一个issue,项目需要选择 Community Support - Open Source Project Repository Hosting

 

3>  参考下图填写概要、Group Id、项目地址、代码管理地址,填写后点击确认提交。网上很多都说需要几个小时或者隔天才有回复,我当时等了10分钟就收到回复了。此时,对方跟你说两件事情:

  • 【提醒】确保 group id对应的域名是你的
  • 【校验】比如我是的项目地址是github上的,他会要求我在github上创建一个和issue同名的项目确保我拥有该项目的管理权限,

完成确认并创建和issue同名的项目后,记得要在issue进行回复,具体参考:  和 

4> 在通过上述的确认和校验后,sonatype会回复你到时候maven发布会用到的snapshot地址和release地址,并提醒你首次发布后需要回复该issue,详情参考

 

2、gpg 环境安装

gpg的主要作用是生成密钥对,会用于后续我们组件发布的校验。

1> 下载地址:

2> 如图红色框所示下载并安装

3> 在安装完成后,执行以下命令生成密钥对,按照提示输入账号、邮箱、密码 (PS: 此处的密码在后面发布会用到,请务必记住)

gpg2 --gen-key 

 4> 执行命令查看密钥, 此时控制台会输出类似下面的内容

$ gpg2 --list-keys ...  pub rsa2048 2019-04-12 [SC] [有效至:2021-04-11]  9A1640F7A2551131612D51B12D83594B7B29D86A  uid [ 绝对 ] xiaoxuetu 
  sub rsa2048 2019-04-12 [E] [有效至:2021-04-11]

 

5> 执行以下命令将公钥发布到服务器中

$ gpg --keyserver hkp://subkeys.pgp.net --send-keys 9A1640F7A2551131612D51B12D83594B7B29D86A...gpg: 正在发送密钥 2D83594B7B29D86A 到 hkp://subkeys.pgp.netgpg: 发送至公钥服务器失败:Server indicated a failuregpg: 发送至公钥服务器失败:Server indicated a failure

6> 如果控制台输出如上面类似的错误内容,则将命令中的密钥调整为 2D83594B7B29D86A

$ gpg --keyserver hkp://subkeys.pgp.net --send-keys 2D83594B7B29D86A

  gpg: sending key E2A36372591567B3 to hkp://pool.sks-keyservers.net

3、Maven全局配置

一般情况下,maven全局配置存在于 HOME/.m2/setting.xml,如果这个目录下没有,则可以从HOME/.m2/setting.xml,如果这个目录下没有,则可以从{MAVEN_HOME}/conf/setting.xml 拷贝一份到 ${HOME}/.m2 目录下并进行以下修改

1> 添加服务器验证信息

sonatype_releases
your user name
your password
sonatype_snapshots
your user name
your password

2> 配置gpg验证命令

gpg
gpg2
your password
gpg

 

4、项目maven配置

1> 在项目的pom.xml中,配置相应的开源协议、仓库信息、开发人员信息和发布配置

The Apache Software License, Version 2.0
http://www.apache.org/licenses/LICENSE-2.0.txt
repo
scm:git:git@github.com:xiaoxuetu/multithreadpool-spring-boot-starter.git
scm:git:git@github.com:xiaoxuetu/multithreadpool-spring-boot-starter.git
http://github.com/xiaoxuetu/multithreadpool-spring-boot-starter/tree/master
xiaoxuetu
xiaoxuetu@163.com
https://github.com/xiaoxuetu
+8
sonatype_releases
Nexus Release Repository
https://oss.sonatype.org/service/local/staging/deploy/maven2
sonatype_snapshots
Nexus Snapshot Repository
https://oss.sonatype.org/content/repositories/snapshots

 

2> 由于发布到maven中央仓库会要求我们在上传jar到同时,必须同步发布对应到Javadoc、source、asc(利用gpg生成到校验),所以需要在maven中添加以下构建插件

org.sonatype.plugins
nexus-staging-maven-plugin
1.6.7
true
sonatype_releases
https://oss.sonatype.org/
false
org.apache.maven.plugins
maven-source-plugin
2.2.1
attach-sources
jar-no-fork
org.apache.maven.plugins
maven-gpg-plugin
1.5
gpg
verify
sign

5、发布操作

1> 执行以下命令进行发布(如果 pom.xml 中 autoReleaseAfterClose 的值为true,则脚本会自动完成在平台上close、release的操作,至此你将成功发布了,否则我们继续查看第2步)

mvn clean javadoc:jar deploy -P release

2> 登录https://oss.sonatype.org,然后选择staging Repositories

 

3> 如下图搜索并选择需要发布的组件,依次执行Close、Release操作

 

4> 如果Release成功,并且你是首次发布组件,则需要到你创建到issue中回复 “我已经成功发布该组件”,经历大概2小时后,该组件将会同步到对应的maven仓库

5> 如果Close或者Release不成功,你可以如下图操作查看原因并谷歌定位,或者回复咨询

 

四、参考文档

1> 发布构件到 Maven 中央仓库遇到的坑: 

2> Working with PGP Signatures: 

3> Deploying to OSSRH with Apache Maven: 

转载地址:http://ukgbi.baihongyu.com/

你可能感兴趣的文章
autoupdate script
查看>>
linux 驱动开发 头文件
查看>>
/etc/resolv.conf
查看>>
container_of()传入结构体中的成员,返回该结构体的首地址
查看>>
linux sfdisk partition
查看>>
ipconfig,ifconfig,iwconfig
查看>>
opensuse12.2 PL2303 minicom
查看>>
电平触发方式和边沿触发的区别
查看>>
网络视频服务器移植
查看>>
Encoding Schemes
查看>>
移植QT
查看>>
如此调用
查看>>
计算机的发展史
查看>>
带WiringPi库的交叉编译如何处理一
查看>>
带WiringPi库的交叉笔译如何处理二之软链接概念
查看>>
Spring事务的七种传播行为
查看>>
ES写入找不到主节点问题排查
查看>>
Java8 HashMap集合解析
查看>>
ArrayList集合解析
查看>>
欢迎使用CSDN-markdown编辑器
查看>>