发布Java项目到Maven中央仓库

1.背景

本教程为2024年9月最新版
我有一个Java项目,想发布到Maven中央仓库,任何人都可以在pom文件中引用我的代码

  • 引用格式如下(以rocketmq为例):
<dependency>
    <groupId>org.apache.rocketmq</groupId>
    <artifactId>rocketmq-client</artifactId>
    <version>5.3.0</version>
</dependency>
2.注册Sonatype账号

Maven中央仓库由Sonatype维护,所以需要注册一个Sonatype账号

  • 地址: Sonatype Maven中央仓库
  • 点击【Sign in】来到登录页
    在这里插入图片描述
    在这里插入图片描述
  • 如果你已经有账号了,填写用户名或邮箱、密码后点击Continue直接登陆即可
  • 如果你没有账号可以选择注册,点击Sign up即可进入注册页面,具体操作略
  • 不想注册也可通过第三方(GoogleGitHub)账号登录,前提是你有这些账号
3.创建命名空间(Namespace)

成功登录Sonatype后,需要创建至少一个命名空间
这一步这是必须的,命名空间可作为日后上传项目的groupId
注意:上传项目的groupId必须是已创建并审核通过的命名空间,否则将无法上传
下面看看如何创建一个命名空间:

  • 点击用户名,再点击 View Namespaces 查看已有命名空间列表
    在这里插入图片描述

  • 然后点击 Add Namespace添加一个命名空间
    在这里插入图片描述

  • 填写命名空间名称,并提交
    在这里插入图片描述

命名空间名称是以“.”分隔的,这个名字不是随便取的,参考以下规则:

(1)如果你有一个GitHub账号,则你可以创建一个io.github.xxx的命名空间,
其中“xxx”是你GitHub的用户名,可以登录到GitHub后查看个人主页的地址
比如“https://github.com/abc”的用户名就是“abc”,可以添加的命名空间为“io.github.abc”
Tips:
如果你是通过GitHub登录Sonatype的,
则会自动通过你的GitHub用户名创建一个命名空间,无需手动创建~

支持的代码库如下:

代码库 命名空间示例
GitHub io.github.myusername
GitLab io.gitlab.myusername
Gitee io.gitee.myusername
Bitbucket io.bitbucket.myusername

(2)如果你有一个自己的域名,则可以通过域名添加一个命名空间
比如你的域名是“www.abc.com”,则可以添加一个“com.abc”的命名空间

(3)其他添加方式请参考官方文档:Namespace创建官方文档

  • 提交后会看到一个待验证的命名空间,下方展示了验证码
    在这里插入图片描述

验证方法,根据命名空间类型的不同验证方式也不同

3.1 GitHub的命名空间验证

如果是GitHub的命名空间,验证方式就是登录对应用户名的GitHub账号
创建一个新的仓库,名称为提交命名空间时生成的验证码(y3shwin48v)

在这里插入图片描述
在这里插入图片描述

  • 仓库创建完毕后,回到Sonatype的命名空间页面点击验证

在这里插入图片描述
在这里插入图片描述

  • 这时命名空间的状态由Unverified变为了Verification Pending,表示正在验证中
  • 等待一段时间后,状态变为Verified时则表示命名空间验证通过

命名空间验证通过后:
1.之前在GitHub创建的仓库可以删除
2.已验证通过(状态为Verified)的命名空间不可删除,也不可以修改

3.2 域名的命名空间验证

如果你是通过域名创建的命名空间,则需要到对应的域名注册服务商配置一个域名解析用于验证
假设你创建的命名空间为“com.abc”,则域名是www.abc.com
登录域名服务商,为abc.com这个域名添加一个域名解析, 这里以阿里云为例:

  • 登录阿里云app,进入域名解析

在这里插入图片描述

记录类型选“TXT”,主机记录填写“@”,记录值填写提交命名空间时生成的验证码(y3shwin48v)
填写完毕后保存即可,后续和GitHub创建好仓库之后的操作一致
验证通过后可以删除这个域名解析

4.安装GPG

GPG(GnuPG)是一款加密软件,可以对文件和电子邮件进行签名和加密
安装GPG,可对我们上传的代码文件进行签名

5.GPG生成密钥
  • 安装完成后,cmd打开命令行

输入"gpg --version"验证是否安装成功,如下代表安装成功

C:\Users\xxx>gpg --version
gpg (GnuPG) 2.4.5
libgcrypt 1.10.3
Copyright (C) 2024 g10 Code GmbH
License GNU GPL-3.0-or-later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Home: C:\Users\xxx\AppData\Roaming\gnupg
Supported algorithms:
Pubkey: RSA, ELG, DSA, ECDH, ECDSA, EDDSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
        CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2
  • 生成key命令:gpg --gen-key

填写Real name(姓名)和Email Address(邮箱,最好用真实的,可用于密钥找回)
输入"O"回车,弹出弹窗,填写密码口令(自定义,后面会用到)两次,然后点击OK,密匙就创建好了

在这里插入图片描述

pub ed25519 2024-09-014 [SC] [expires: 2027-09-14]
1189GDSG89043SGDB8943ABCGDFGAADK78DHS
uid realName <email address>
sub cv25519 2024-09-14 [E] [expires: 2027-09-14]

此处生成的公钥为:1189GDSG89043SGDB8943ABCGDFGAADK78DHS

  • 发布公钥,命令:gpg --keyserver keyserver.ubuntu.com --send-keys <公钥>

如果出现发送失败的情况,可以选择其他服务器多次重试,总会成功的
中央服务器支持的GPG密钥服务器有:
keyserver.ubuntu.com
keys.openpgp.org
pgp.mit.edu

  • 验证公钥是否上传成功:gpg --keyserver keyserver.ubuntu.com --recv-keys <公钥>
  • 查看已有的公钥列表:gpg --list-keys
6.本地项目配置
6.1 pom文件完整配置

假设我已有审核通过的命名空间:io.github.xxx,现上传的项目名称为:abc
注意:同一个项目的同一个版本只能在Maven中央仓库发布一次,要多次发布须升级版本号

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <!-- 项目坐标 -->
    <groupId>io.github.xxx</groupId>
    <artifactId>abc</artifactId>
    <version>1.0.0</version>
    <!-- 项目信息 -->
    <name>abc</name>
    <description>项目描述</description>
    <url>https://github.com/xxx/abc</url>

    <!-- 打包方式 -->
    <packaging>jar</packaging>

    <properties>
        <maven.compiler.source>8<
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值