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试过各种方法都没有解决,深感网上这类博客太少,为了避免下次再遇到相同的问题解决老半天,写这篇博客以供下次使用,大家有问题可在下面留言(●ˇ∀ˇ●),我看到了都会进行回复。