SDK上传Maven Central——保姆式教学

1、前期准备

1、注册jira账号

https://issues.sonatype.org/

说明(便于理解账号作用)

OSSRH(Sonatype OSS Repository Hosting)是一个由Sonatype提供的免费的Maven中央仓库代理服务,允许开发者将他们的Maven构件发布到Maven中央仓库,从而使这些构件对全世界的开发者都可用。

为了使用OSSRH,开发者需要先创建一个账号,并申请一个Sonatype JIRA账号,然后将构件上传到OSSRH,通过JIRA账号将构件提交到审核队列。审核通过后,构件将自动转移到Maven中央仓库中,供全世界的开发者使用。这个过程一般称为Maven Central Repository Sync。

2、账号注册完后需要创建申请

接下来进行相关信息填写:

概要:认真填写基本不会有问题,无太多讲究。

Group Id:与项目的Group Id需要保持一致,自己有域名就填自己的域名,如域名为:example.com,则该处填 com.example。若为gitee或github等,按其下面提示连接填写即可。

Project URL: 填代码仓库地址,例如gitee和github等直接定位到项目的链接https://gitee.com/coderzhang2001/excel-sdk的形式,无”.git“后缀。一般为人访问浏览的地址。

SCM URL: 填Project URL+.git的形式,如:https://gitee.com/coderzhang2001/excel-sdk.git。该url用于机器访问和操作。

3、处理申请

     在第二步提交申请后,系统会安排经办人来处理你的申请,没什么特殊问题的话一般都是机器人对你的申请进行处理,流程如下:

对你填写的Group Id进行认证,此步骤用于确保使用的域名属于你本人。

第一步:需要进入自己的服务器服务商提供的管理台,为自己的域名添加TXT记录,记录值便是自己提出申请的标识,如我这是OSSRH-90090。

第二步:可能第一次使用的人不知道什么意思,我一开始也是,实际上就是将自己当前申请设置为Open状态(下图箭头处)。因为当你收到这条信息的时候,你的状态已经被修改为了Waiting for Response(刷新页面后可见)。

当你完成后,机器会自动进行审核(可能需要稍等一小段时间),审核通过后你的申请会变成“已解决”状态并会再发邮件给你,内容大致如下图:

至此,你以及成功完成了前期的准备工作。


接下来,我们可以开始着手项目发布了。

2、GPG签名maven

1、进行maven项目构件签名,以此保证项目的安全性和完整性。

这里需要使用GPG加密,步骤如下(windows教程):

下载地址:https://gnupg.org/download/

下载完成后,启动软件进行GPG证书创建:

接下来填写信息:

进行勾选“使用密码句……”,点击确认后进行输入passphrase,这个需要记住,之后需要用:

接下来右键证书,导出公私密钥文件:

接下来将公钥文件中的公钥发布到OpenPGP Keyserver中,这步非常重要!!!不然之后需要返工。

3、进行maven配置

1、settings.xml配置

首先需要在maven的conf/settings.xml中配置自己的ossrh认证信息以及GPG私钥文件路径之前设置的passphrase

    <server><id>ossrh</id><username>{jira-username}</username><password>{jira-password}</password><privateKey>{/path/xxx_SECRET.asc}</privateKey><passphrase>{certificate-passphrase}</passphrase></server>

2、pom.xml配置

这里的配置非常重要,之后会有审核。

<name>xxxx</name><groupId>{Your-OSSRH-GroupId}</groupId><artifactId>xxxx</artifactId><version>xxx</version><url>xxxxxx</url><description>xxxxx</description><licenses><license><name>Apache License, Version 2.0</name><url>https://www.apache.org/licenses/LICENSE-2.0.txt</url><distribution>repo</distribution></license></licenses><developers><developer><name>xxx</name><email>xxx</email><roles><role>Developer</role></roles></developer></developers><scm><url>{OSSRH中的Project URL}</url><connection>{OSSRH中的SCM URL}</connection></scm><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding></properties>
​
​<dependencies>……</dependencies>
​
​<profiles><profile><id>default</id><activation><activeByDefault>true</activeByDefault></activation><distributionManagement><snapshotRepository><id>ossrh</id><url>https://s01.oss.sonatype.org/content/repositories/snapshots</url></snapshotRepository><repository><id>ossrh</id><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-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>{your-jdk-version}</source><target>{your-jdk-version}</target></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId><version>2.2.1</version><executions><execution><id>attach-sources</id><goals><goal>jar-no-fork</goal></goals></execution></executions></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-javadoc-plugin</artifactId><version>3.3.1</version><configuration><encoding>UTF-8</encoding></configuration><executions><execution><id>attach-javadocs</id><goals><goal>jar</goal></goals></execution></executions></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-gpg-plugin</artifactId><version>1.5</version><executions><execution><id>sign-artifacts</id><phase>verify</phase><goals><goal>sign</goal></goals></execution></executions></plugin></plugins></build></profile></profiles>

注意: 由于上传到maven central的maven构件均有严格的规范要求,因此以上配置基本均不可少,少了就容易审核不过再返工。切记!切记!

PS:maven对javadoc的规范有严格要求,因此每个方法均必须有javadoc注释,若没有注释在deploy时会报错。

在以上内容均配置完后便可进行部署了,可使用命令行执行mvn clean deploy或者idea可视化执行。

4、发布

登录Nexus Repository Manager,账号密码无需组测,使用之前注册的jira账号。

若mvn deploy顺利的话,按下面步骤可见到自己发布的maven构件,按下图步骤进行:

一般这时候都会检测到问题,问题主要有两个方面:

1、jar包漏洞

点击closed之后会有邮件发送过来,会报告你的maven项目中存在多少漏洞,根据提示更改jar包版本直到整个项目无漏洞为止。

2、maven信息不足

一般这里都是pom.xml中的配置问题,可在Activity中进行查看审核不通过的项,之后按照提示进行配置pom.xml中的信息即可。

        如果上面两个问题都解决了,那就基本完成了,等待审核通过之后,点击release之后等待几十分钟就会有邮件提示,一切就大功告成了。

以上便是上传自己的SDK到Maven Central的全部步骤了。

一些感想:

我在做这个的时候也是看着博客跟着做,但由于我使用的jdk17以致于pom.xml中加了nexus-staging-maven-plugin之后,报"无法访问java.util.Comparator……"的错误,找遍全网问了好久chatgpt试过各种方法都没有解决,深感网上这类博客太少,为了避免下次再遇到相同的问题解决老半天,写这篇博客以供下次使用,大家有问题可在下面留言(●ˇ∀ˇ●),我看到了都会进行回复。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/47095.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redis实现分布式锁问题

谷歌浏览器兼容chatgpt教程 https://blog.csdn.net/qq_37191690/article/details/130726995 使用Redis作为分布式锁的一些注意点 </div>Redis实现分布式锁 最近看分布式锁的过程中看到一篇不错的文章&#xff0c;特地的加工一番自己的理解&#xff1a; Redis分布式锁实…

outlook如何撤回邮件?(中英文)

1、中文&#xff1a; 已发送的邮件&#xff0c;任意选择一个已发送的邮件&#xff0c;双击进入详情页&#xff08;这点非常重要&#xff01;&#xff01;&#xff01;如果在列表中查看&#xff0c;是找不到撤回邮件按钮的&#xff09;&#xff0c;“移动”按钮的右侧按钮&…

希拉里的退选演说

作者&#xff1a; 阮一峰 日期&#xff1a; 2008年6月10日 前天&#xff0c;希拉里克林顿发表演说&#xff0c;宣布总统竞选失败。 我今天才看到演说全文&#xff0c;惊奇地发现这是一篇极出色的演说&#xff0c;内容可圈可点&#xff0c;给人留下深刻印象。 一般来说&#xf…

chatgpt赋能python:Python请求头——让你的网络请求更有效率

Python请求头——让你的网络请求更有效率 网络请求是现代应用程序的核心。但是&#xff0c;如果你不了解Python请求头的概念和用途&#xff0c;那么你可能会面临一些棘手的问题。在本文中&#xff0c;我们将深入探讨Python请求头&#xff0c;了解其作用、语法和最佳实践。 什…

chatgpt赋能python:Python模拟并发请求的方法

Python模拟并发请求的方法 随着互联网的发展&#xff0c;Web应用程序也在不断壮大。对于Web应用程序开发人员来说&#xff0c;必须考虑如何处理大量的并发请求。提高响应速度和性能是Web应用程序优化的一个关键问题。在处理并发请求方面&#xff0c;Python提供了许多有用的库和…

哈工大LTP的依存分析

# 可视化 网址&#xff1a;http://ltp.ai/demo.html LTP提供的模型有tiny、small和base。根据安装的LTP版本&#xff0c;模型的版本也需要匹配&#xff0c;否则可能会出现不兼容的情况 注&#xff1a;web demo运行的是base模型&#xff1b;在线的SDP解码是Graph和Tree混合解码&…

哈工大2020软件构造Lab3实验报告

本项目于4.21日实验课验收 更新完成 如果有所参考 请点点关注 点点赞GitHub Follow一下谢谢 2020春计算机学院《软件构造》课程Lab3实验报告 Software Construction 2020 SpringLab-3 Reusability and Maintainability oriented Software ConstructionCSDN博客 文章目录 本项目…

哈工大2020软件构造Lab4实验报告

为了鄙视代写抄袭伸手党&#xff0c;删除了一些“容易抄袭”的部分 有问题/询问省略部分——欢迎QQ交流&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 本项目于5.19日实验课完成 &#xff08;该更新的&#xff09;更新完成 如果有所参考 请点点关注 点点赞Git…

HIT csapp LAB1报告

实验报告 实 验&#xff08;一&#xff09; 目 录 第1章 实验基本信息 1.1 实验目的 1.2 实验环境与工具 1.2.1 硬件环境 1.2.2 软件环境 1.2.3 开发工具 1.3 实验预习 第2章 实验环境建立 2.1 Windows下 hello程序的编辑与运行&#xff08;5分&#xff09; …

[HITML]哈工大2020秋机器学习Lab4实验报告

Gtihub仓库 2020年春季学期 计算学部《机器学习》课程 Lab4 实验报告 姓名学号班号电子邮件手机号码 1 实验目的 实现一个PCA模型&#xff0c;能够对给定数据进行降维&#xff08;即找到其中的主成分&#xff09; 2 实验要求及实验环境 2.1 实验要求 测试&#xff1a; 首…

[HITML]哈工大2020秋机器学习Lab3实验报告

GitHub仓库 2020年春季学期 计算学部《机器学习》课程 Lab3 实验报告 姓名学号班号电子邮件手机号码 1 实验目的 实现一个k-means算法和混合高斯模型&#xff0c;并且用EM算法估计模型中的参数。 2 实验要求及实验环境 2.1 实验要求 测试&#xff1a;用高斯分布产生k个高…

SwiftUI——提供多种小组件(Widget)供用户选择

有时候app需要提供多种widget供用户选择/使用&#xff0c;那么可以使用以下方法&#xff0c;不过需要注意&#xff0c;每个app最多可以包含5种小组件&#xff08;Widget&#xff09;&#xff1a; 首先做几个小组件&#xff1a; //省略之前的Provider和SimpleEntey部分 //第一个…

iOS轻量级组件化管理工具,让你轻轻松松添加自己的小组件.

2019独角兽企业重金招聘Python工程师标准>>> TXRouter 轻量级组件化管理工具,让你轻轻松松添加自己的小组件.该工具原理简单、制作轻松、思路清晰等优点. TXRouter优点 比MGJRouter更加简单、使用更加方便原理简单、制作轻松、思路清晰 TXModel缺点 不能高大上定义U…

iOS14 Widget小组件开发实践1——了解Widget

iOS14带来了新的UI组件&#xff1a;WidgetKit&#xff0c;人称小组件&#xff08;用过安卓的都能理解&#xff09;&#xff0c;这货的前身其实就是iOS10时候引入的Today Extension。 Widget为应用程序提供了这样一种功能&#xff1a;其可以让用户在主屏幕上展示App中用户所关心…

如何用iOS14 Widget小组件自定义玩法

一.了解Widget iOS14带来了新的UI组件:WidgetKit,人称小组件(用过安卓的都能理解),这货的前身其实就是iOS10时候引入的Today Extension。 Widget为应用程序提供了这样一种功能:其可以让用户在主屏幕上展示App中用户所关心的信息。例如一款天气软件,其可以附带一个Widg…

iOS14 Widget开发踩坑(二)修正版-多个小组件

iOS14 Widget开发踩坑&#xff08;二&#xff09;修正版-多个小组件 前言添加多个小组件情况1.对于已经写好的一个小组件情况2.对于新建好还没写的小组件 Widgets的限制突破小组件个数限制的方法参考文献 前言 2020年12月3日 经过进一步的学习 发现了文章中还有很多错误&#…

IOS小组件(1):概述

IOS小组件(1):概述 引言小组件是什么?小组件概述小组件开发备注小组件实现原理结语引言 本系列文章作者是安卓开发,以安卓开发的视角学习IOS小组件,记录一下踩坑记录,如有讲得不对的地方,路过大佬多包涵。如果你是想深入学习小组件,建议您顺着笔者的编号顺序阅读本系列…

ios中在app应用内刷新小组件数据

需求&#xff1a; 我们需要在app应用内刷新时间线&#xff0c;让桌面小组件加载最新的内容。即app内修改了共享数据后&#xff0c;需要通知桌面小组件强制刷新&#xff0c;显示改变后的内容。 当某种情况影响到小组件的当前时间线时&#xff0c;您的 App 可以指示 WidgetKit …

android 仿苹果 小组件,仿ios14桌面小部件

仿ios14桌面小部件&#xff0c;这是一款面向广大安卓手机用户推出的高仿iOS14桌面插件软件&#xff0c;大家可以使用这款软件快速完成自己想要的桌面显示&#xff0c;多种插件一键点击轻松完成设置过程&#xff0c;让大家体验到同款iOS14桌面强大的功能&#xff0c;非常有意思的…

iOS14 小组件 开发1

前言:小组件的开发和我们正常情况开发App的逻辑是一样的,正常情况分为:网络请求,数据模型,view,渲染.只不过是小组件的开发使用了 swiftUI 语言来编写,所以要对SwiftUI的空间有所了解. 好!那我们接下来开始我们的小组件开发吧. 首先,创建Widget Extension 然后选择证书,起个名…