发布构件到Maven中央仓库

本文详细介绍了如何将个人组件发布到Maven中央仓库的步骤,包括注册JIRA账号、创建Issue、使用GPG密钥对、POM文件规范、settings.xml配置以及首次和后续的发布流程。关键步骤包括GPG密钥对的生成和发布、POM文件的正确配置以及使用Nexus Staging Maven plugin自动化部署。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概要

在上一篇文章中,我从一个学习的角度写了一篇博文:
http://blog.youkuaiyun.com/xiajiqiu/article/details/77607492
该博文记录了我在实际学习过程中的每一个步骤,但是大多数读者是希望有一个清晰的步骤来实现发布构件到Maven中央仓库的,因此我将上一篇博文进行的精简,其实整个步骤大致如下:
1. 注册JIRA帐号
2. 创建新的Issue并等待工作人员审核通过(2天左右)
3. GPG创建密钥对同时上传到key-servers
4. 编写符合规范的java项目,主要是pom文件规范
5. 首次发布到中央仓库,需要在原来的Issue上回复等待审核
6. 后续的发布过程

接下来就上面几个步骤一一介绍。

注册JIRA帐号

注册地址是:https://issues.sonatype.org/secure/Signup!default.jspa
请读者自行进行注册,并记录好自己的帐号和密码,后续会使用到。

创建Issue并等待审核

Issue创建地址:
https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134

该链接打开的页面如下:
这里写图片描述
每个表单项我还是简单说下吧:

表单项 说明
Summary 这就是项目说明,你直接可以写个人项目,搞个统称就行
GroupID 看到了吗,下面有一行说明怎么定义groupId的一些建议:http://central.sonatype.org/pages/choosing-your-coordinates.html
这里写图片描述
比如你喜欢放到github上或者oschina上,你完全可以用类似下面的:com.github.{username} 比如 com.github.arvinnet.osc.{username} 比如 net.osc.arvin
Project_URL 你就填写你的github或者git.oschina.net 的,或者个人主页也行
SCM_URL 写成和Project URL 一样也没啥事

创建完成后会进入该Issue界面,通常会立刻收到一个Comment,内容如下:
这里写图片描述
会询问你使用的域名是否是你的或是你的组织,这个你直接说是或者你是这个的成员就行,一般都会通过的。

可能要2天左右的时间才会收到工作人员的回复,如果看到下面这个说明是成功的:
这里写图片描述

GPG密钥对使用

安装Gpg4win

Gpg4win下载地址:https://www.gpg4win.org/download.html
将安装文件下载下来,然后打开DOS进行验证:
这里写图片描述

生成密钥对

一个密钥对允许你对你要发布的组件进行GPG签名和验证,可以通过以下命令来生成新的密钥对:

gpg –gen-key

生成过程如下:
这里写图片描述

当输入 O 的时候会弹出这个对话框,要求输入密码 passphrase,这个很重要,你一定要记住并且在进行发布的时候是需要用到的。

查看密钥对

上一步骤中我们生成了密钥对,接下来,我们可以使用以下命令查看本机包含的密钥对:
这里写图片描述

其中,pub表示是公钥,而sub表示私钥。

发布公钥到GPG key-servers

这一步实际上是非常的关键的,Sonatype 公司需要一个公钥来验证你deploy的文件,那么它从哪获取到这个公钥呢?这就需要你部署到key-servers上面去,有哪些key-servers呢?

文档中提供了一个GPG 的 key-servers

hkp://pool.sks-keyservers.net

实际上,在我实际的操作中,第一次我deploy的时候,Sonatype在进行验证的时候,说找不到公钥,然后告诉我需要上传到GPG 的key-servers, 当时具体的提示信息是:

failureMessage  No public key: Key with id: (1fcda02dd63733fe) was not able to be located on http://pgp.mit.edu:11371/. Upload your public key and try the operation again.
failureMessage  No public key: Key with id: (1fcda02dd63733fe) was not able to be located on http://keyserver.ubuntu.com:11371/. Upload your public key and try the operation again.
failureMessage  No public key: Key with id: (1fcda02dd63733fe) was not able to be located on http://pool.sks-keyservers.net:11371/. Upload your public key and try the operation again.

从上面我们发现有三个 key-servers 是 Sonatype公司要用到的,Sonatype公司会在上面任意一个key-servers上进行搜索公钥,具体的key-servers 为:

http://pgp.mit.edu:11371
http://keyserver.ubuntu.com:11371
http://pool.sks-keyservers.net:11371

这个要注意了,这个是带端口的,这个我在实际操作中,也踩了这个坑,一开始我上传公钥到下面中的一个(注意,没有带端口号)

gpg –keyserver hkp://pool.sks-keyservers.net –send-keys C6EED57A
gpg –keyserver hkp://pgp.mit.edu –send-keys C6EED57A
gpg –keyserver hkp://keyserver.ubuntu.com –send-keys C6EED57A

注意了,协议不是http,而是 hkp,要看清楚了,实际上是需要带端口号上传的:

gpg –keyserver hkp://pool.sks-keyservers.net:11371 –send-keys C6EED57A
gpg –keyserver hkp://pgp.mit.edu:11371 –send-keys C6EED57A
gpg –keyserver hkp://keyserver.ubuntu.com:11371 –send-keys C6EED57A

没有成功的话要注意Sonatype反馈了什么信息然后根据信息进行修改。

上面是将公钥发布到 GPG key-servers 的命令,我们可以通过以下命令查看具体的公钥信息:

gpg –keyserver hkp://pool.sks-keyservers.net:11371 –recv-keys C6EED57A
gpg –keyserver hkp://pgp.mit.edu:11371 –recv-keys C6EED57A
gpg –keyserver hkp://keyserver.ubuntu.com:11371 –recv-keys C6EED57A

本例中我将我的公钥发布到以下key-servers:
这里写图片描述
查看:
这里写图片描述

POM文件规范

POM文件作为发布组件的一部分,需要你定义一些约定的规范值才能将组件发布上去,本小节就是描述这个规范的。

正确的坐标

项目的坐标,我们又称之为 GAV,即GroupId,ArtifactId,Version三个值,说明如下:

• groupId: the top level namespace level for your project starting with the reverse domain name

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值