2022年jar包发布到Maven公共仓库最全攻略

分几个步骤:

1、注册 issues.sonatype.org 账号
2、创建 issues 填写项目地址(github、gitee等)
3、验证域名持有(没有使用自己域名的跳过)
4、等待上面几点验证完成,需要手动相issues状态改为open(点击操作中的响应),然后等待工作人员通过。
5、通过后你就可以推送jar到 https://s01.oss.sonatype.org/ 了。(到此才能登陆)
6、等待同步到中央仓库即可正常引入

1、注册账号

https://issues.sonatype.org/ 中注册一个账号。

2、创建issues

点击导航栏的创建,若你没有域名,在Group Id 中填写参考:https://central.sonatype.org/publish/requirements/coordinates/

填写信息,下面的是我的例子:

然后创建
得到 OSSRH-79874 ,然后等待审核人员添加域名验证评论

3、域名持有验证

当工作人员叫你添加域名认证时,

OSSRH-79874 解析到我的域名lingkang.top


做完以上,等几分钟再回到issues中,将状态改为open,一定要改为open,否则没有工作人员审核通过

对应位置有一个响应按钮,点击它就能将状态设置为open,我不太记得是不是响应了,记得添加了域名解析再点

4、审核通过

然后工作人员就会审核,等一段时间来就会看到状态变成已解决,说明通过了,然后发一句感谢:

这时你就可以通过上面注册的账号登录 https://s01.oss.sonatype.org/#stagingRepositories

5、推送jar

5.1 申请 gpg 签名

说明:https://central.sonatype.org/publish/requirements/gpg/
在这里下载简易安装版

说明:https://central.sonatype.org/publish/requirements/gpg/

或者(推荐)

在这里下载gpg4win-4.0.0.exe https://gpg4win.org/download.html
一路安装点击默认即可,安装后可能需要重启电脑。
cmd生成签名:

gpg --gen-key

需要填写一些基本信息,并设置一个密码
注意这个密码很重要,你换一台电脑后推送项目时需要输入这个密码。忘记了你就只能重新生成!!!
注意这个密码很重要,你换一台电脑后推送项目时需要输入这个密码。忘记了你就只能重新生成!!!
注意这个密码很重要,你换一台电脑后推送项目时需要输入这个密码。忘记了你就只能重新生成!!!
例如生成如下:

pub   ed25519 2022-04-12 [SC] [expires: 2024-04-11]
DD33E5A9CDD332F444EAE9EF888A06B29706DBB4
uid lingkang <ling-kang@qq.com>
sub cv25519 2022-04-12 [E] [expires: 2024-04-11]


上传公钥到服务器
使用 gpg --keyserver hkp://URL --send-keys 签名上传公钥,然后使用 gpg --keyserver hkp://URL --recv-keys 签名查看是否上传成功。

gpg --keyserver keyserver.ubuntu.com --send-keys DD33E5A9CDD332F444EAE9EF888A06B29706DBB4
检查
gpg --keyserver keyserver.ubuntu.com --recv-keys DD33E5A9CDD332F444EAE9EF888A06B29706DBB4 或者
gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys DD33E5A9CDD332F444EAE9EF888A06B29706DBB4
检查
gpg --keyserver hkp://keyserver.ubuntu.com:11371 --recv-keys DD33E5A9CDD332F444EAE9EF888A06B29706DBB4

5.2 配置maven

将 sonatype 账号密码配置到setting.xml<servers></servers>

	<!-- Maven公共仓库 -->
<server>
<id>maven-public</id><!-- 注意这个id名称,后面会用到 -->
<username>lingkang</username>
<password>your password</password>
</server>

5.3 推送jar

在项目中,配置一下pom.xml

	<modelVersion>4.0.0</modelVersion>
<groupId>top.lingkang</groupId>
<artifactId>final-session</artifactId>
<packaging>pom</packaging>
<version>2.0.1</version> <url>https://gitee.com/lingkang_top/final-session</url>
<name>final-session</name>
<description>final-session 一个轻量级分布式session框架</description>
<organization>
<name>lingkang</name>
<url>http://lingkang.top</url>
</organization>
<developers>
<developer>
<name>lingkang</name>
<email>ling-kang@qq.com</email>
<organization>lingkang</organization>
<organizationUrl>http://lingkang.top</organizationUrl>
<roles>
<role>Developer</role>
</roles>
<timezone>+8</timezone>
</developer>
</developers>
<licenses>
<license>
<name>MIT License</name>
<url>http://www.opensource.org/licenses/mit-license.php</url>
<distribution>repo</distribution>
</license>
</licenses>
<scm>
<url>https://gitee.com/lingkang_top/final-session</url>
<connection>https://gitee.com/lingkang_top/final-session.git</connection>
</scm> <modules>
<module>final-session-core</module>
<module>example-servlet</module>
<module>example-springboot</module>
</modules> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
<spring-boot.version>2.1.12.RELEASE</spring-boot.version>
</properties> <!-- 依赖 .... --> <!-- 只需在父工程中添加,子工程不用添加 -->
<distributionManagement>
<snapshotRepository>
<id>maven-public</id> <!-- 此处id与setting.xml中的服务id保持一致 -->
<name>oss Snapshots Repository</name>
<url>https://s01.oss.sonatype.org/content/repositories/snapshots/</url>
</snapshotRepository>
<repository>
<id>maven-public</id> <!-- 此处id与setting.xml中的服务id保持一致 -->
<name>oss Staging Repository</name>
<url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement> <build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<executions>
<execution>
<id>attach-sources</id>
<phase>package</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin> <!-- 生成javadoc -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
<configuration>
<source>${java.version}</source>
<additionalJOption>-Xdoclint:none</additionalJOption>
<failOnError>false</failOnError>
</configuration>
</plugin> <!-- gpg认证 只需在父工程中添加 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build> <repositories>
<repository>
<id>central</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<layout>default</layout>
<!-- 是否开启发布版构件下载 -->
<releases>
<enabled>true</enabled>
</releases>
<!-- 是否开启快照版构件下载 -->
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>

你也可以随便找个spring源码包,照着它抄pom.xml即可,不必像我这样
执行安装推送,根目录下执行

mvn clean deploy

若报找不到 gpg2 错误,就去C:\Program Files (x86)\GnuPG\bin将gpg.exe改为gpg2.exe即可
若报找不到 gpg2 错误,就去C:\Program Files (x86)\GnuPG\bin将gpg.exe改为gpg2.exe即可
若报找不到 gpg2 错误,就去C:\Program Files (x86)\GnuPG\bin将gpg.exe改为gpg2.exe即可

可以看到核心代码生成的jar已经成功,那些example不用上传,报错也不用管。

5.4 选择要发布的jar

登录 https://s01.oss.sonatype.org/#stagingRepositories
选择合上要发布的jar,将暂存库关闭并通过检验就会不同到Maven,一定要关闭暂存库通过才能同步!


一定要所有的扫描校验都通过才行,而且有延迟和邮件通知你的

有校验没通过就要自己根据提示改改,重新打包推送。
接着释放release依赖:https://central.sonatype.org/publish/release/
一定要release才会同步到Maven公共仓库,否则过一段时间会清理了你的jar


过半小时就能直接引用:(虽然搜索不到)
此时你就能在https://repo1.maven.org/maven2/中找到你的依赖

 <dependency>
<groupId>top.lingkang</groupId>
<artifactId>final-session-core</artifactId>
<version>2.0.1</version>
</dependency>

我的已经同步公共仓库:https://repo1.maven.org/maven2/top/lingkang/
过几天就有搜索结果。

5.5 注意事项

若不需要模块也上传了,可以在关闭暂存库前删除:

这位帅哥点个赞再走

这么辛苦写攻略,点个赞再走嘛

2022年发布jar到Maven公共仓库最全攻略的更多相关文章

  1. maven教程全攻略

    maven教程全攻略 我们在开发项目的过程中,会使用一些开源框架.第三方的工具等等,这些都是以jar包的方式被项目所引用,并且有些jar包还会依赖其他的jar包,我们同样需要添加到项目中,所有这些相关 ...

  2. VSCode插件开发全攻略(十)打包、发布、升级

    更多文章请戳VSCode插件开发全攻略系列目录导航. 发布方式 插件开发完了,如何发布出去分享给他人呢?主要有3种方法: 方法一:直接把文件夹发给别人,让别人找到vscode的插件存放目录并放进去,然 ...

  3. 使用CI/CD工具Github Action发布jar到Maven中央仓库

    之前发布开源项目Payment Spring Boot到Maven中央仓库我都是手动执行mvn deploy,在CI/CD大行其道的今天使用这种方式有点"原始".于是我一直在寻求一 ...

  4. 不使用IDE,用maven命令打包war项目及出现的问题解决(最全攻略,亲测有效)

    第一次在博客园写博客,写的不好大家见谅啊!! 一.首先,在用maven打包之前,一定确认好你使用的jdk版本和maven的版本,最好就是用jdk1.8和maven3.3以上的,版本太低了容易出现一些意 ...

  5. Delphi ActiveForm发布全攻略

    论坛上很多朋友(也包括我)提到ActiveForm的发布问题,都没有得到很好的解决.下面是本人开发ActiveForm的一点经验,拿出来跟大家分享,开发环境为 Win2000Server,IIS5.0 ...

  6. vc6开发ActiveX并发布全攻略(三)(转)

    一.环境: windows xp sp3 Microsoft VC++ 6.0 二.制作文件 打开iexpress.exe(windows提供的一个向导式cab制作工具,位置:C:\WINDOWS\s ...

  7. 手把手教你提交Jar包到Maven公共仓库 | 萌新写开源02

    在上一篇文章中,我介绍了自己的SpringBoot Starter项目,可以让我们使用注解的方式轻松地获取操作日志,并推送到指定数据源. 之前,我的项目开源在Github上,大家想要用我的项目,还得把 ...

  8. 如何发布jar包到maven中央仓库

    自使用maven以来,没少使用maven中央仓库中的各种jar包,方便有效,但是咱们也不能总是只取不予,也应该懂得奉献,当你写好了一个十分好用的jar包,想贡献出去给大家使用的时候,应该怎么做呢?当然 ...

  9. Maven 如何发布 jar 包到 Nexus 私库

    Nexus2可以通过管理界面来上传jar包到私库中,而最新的Nexus3却找不到了上传界面,只能通过以下方式来发布到私库. 发布第三方jar包 这种情况是maven远程仓库没有,本地有的第三方jar包 ...

  10. gradle上传jar包到maven公共仓库

    首先这里说的中央仓库 是指的 https://issues.sonatype.org/ 而不是maven私服. 其次是使用gradle上传jar包,maven上传,网上有很多教程,这里不做赘述. 首选 ...

随机推荐

  1. element-ui实现弹窗

    element-ui实现弹窗 需要的官网组件 要弹出的页面 <template> <el-form :model="ruleForm" :rules=" ...

  2. Python面向对象——面向对象介绍、实现面向对象编程、定义类、再调用类产生对象、总结__init__方法、查找顺序

    文章目录 面向对象介绍 实现面向对象编程 一:先定义类 二:再调用类产生对象 总结__init__方法 查找顺序 面向对象介绍 ''' 面向过程: 核心是"过程"二字 过程的终极奥 ...

  3. 数据结构与算法 | 数组(Array)

    数组(Array) 数组(Array)应该是最基础的数据结构之一,它由相同类型的元素组成的集合,并按照一定的顺序存储在内存中.每个元素都有一个唯一的索引,可以用于访问该元素. // java 数组示例 ...

  4. 关于AI时代的程序架构的变化

    以ChatGPT为代表的AI出现,表示着AI的零点时刻已经突破.现在AI的使用已经不用再多说了,实际上是已经侵入到各行各业.所有人都在疯狂寻找本行业AI的使用场景,这样的盛景只在互联网刚出现的时候能感 ...

  5. Redis主从复制部署小结

    Redis主从 搭建主从架构 单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离. 主从数据同步原理 全量同步 主从第一次建立连接时,会执行全量同 ...

  6. Jenkins相关概念

    1,Jenkins相关工具概念: 要熟练掌握Jenkins持续集成的配置.使用和管理,需要了解相关的概念.例如代码开发.编译.打包.构建等名称,常见的代码相关概念包括:JDK.JAVA.MAKE.AN ...

  7. CSP 2022 游记

    赛前占坑. 由于不知是 \(Day ?\) 故采用日期方式记录. 文笔所限,闲话较多,略显杂乱. 09.?? 接到通知,LN 初赛线上.面基环节无了/kk 09.17 翘 whk 和数学统练参加多校联 ...

  8. 每天5分钟复习OpenStack(七)内存虚拟化

    标题中的存储虚拟化,涉及到两个方面,分别是内存和磁盘的虚拟化技术.内存的虚拟化就不得不提EPT和VPID 技术. 首先申明下本人其实不想写一些纯理论的东西,但是架不住面试经被问,为此特将一些特别复杂的 ...

  9. JAVA多线程(2)——锁(对象锁和类锁)

    1.如下代码 1 public class TestSync1 implements Runnable { 2 Timer1 timer = new Timer1(); 3 public static ...

  10. Python 包管理器入门指南

    什么是 PIP? PIP 是 Python 包管理器,用于管理 Python 包或模块.注意:如果您的 Python 版本是 3.4 或更高,PIP 已经默认安装了. 什么是包? 一个包包含了一个模块 ...