准备

  1. GitHub的账户
  2. 注册Sonatype的账户

https://issues.sonatype.org/secure/Signup!default.jspa

  1. 下载GPG

    https://www.gnupg.org/download/
    4.配置maven

    项目的发布申请

    创建问题,填写内容。
    这里要注意一下:group id,最好填io.github.xxx
    image.png
    image.png
    提交完成之后,会创建一个Issues,内容显示如下:
    image.png
    这里需要注意一下注释,他会提示你需要做的一些工作,下面是我创建成功后的一些提示
    image.png

  2. 改groupid

  3. 在github创建一个OSSRH-8028的id

改完之后,如果没有错误他会提示下图,就代表你创建成功
image.png

安装并配置GPG

发布到Maven仓库中的所有文件都要使用GPG签名,以保障完整性。因此,我们需要在本地安装并配置GPG。

1、GPG安装

下载地址: https://www.gnupg.org/download/
下载后傻瓜式安装即可
使用管理员身份打开 cmd,执行命令 gpg —version ,判断是否安装成功

2、生成密钥

使用管理员身份打开 cmd
执行命令:

  1. gpg --gen-key

输入 用户名 / 密码
输入 o 后弹出密码设置
image.png
获取 key

把 key 发送到中央仓库服务器,后面上传会做权鉴

  1. gpg --keyserver keyserver.ubuntu.com --send-keys B34ACF782ABE8FD3
  2. gpg --keyserver keyserver.ubuntu.com --recv-keys B34ACF782ABE8FD3

配置maven

setting.xml为Maven的全局配置文件,路径为$MAVEN_HOME/conf/settings.xml,需要注册Sonatype的账户时配置的Username和Password添加到servers标签中,这样才能将jar包部署到Sonatype OSSRH仓库:

配置Maven的setting.xml

  1. <server>
  2. <id>sonatype-nexus-snapshots</id>
  3. <username>Sonatype账号</username>
  4. <password>Sonatype密码</password>
  5. </server>

配置项目的pom.xml

根据Sonatype OSSRH的要求,以下信息都必须配置:

  1. <a name="fKzAK"></a>
  2. ## pom.xml 增加打包配置
  3. ```java
  4. <build>
  5. <plugins>
  6. <!-- spring boot 项目复用需要添加的内容 -->
  7. <plugin>
  8. <groupId>org.apache.maven.plugins</groupId>
  9. <artifactId>maven-compiler-plugin</artifactId>
  10. <configuration>
  11. <source>1.8</source>
  12. <target>1.8</target>
  13. </configuration>
  14. </plugin>
  15. <!-- java-doc配置 -->
  16. <plugin>
  17. <groupId>org.apache.maven.plugins</groupId>
  18. <artifactId>maven-javadoc-plugin</artifactId>
  19. <version>2.10.4</version>
  20. <configuration>
  21. <aggregate>true</aggregate>
  22. </configuration>
  23. <executions>
  24. <execution>
  25. <id>attach-javadocs</id>
  26. <goals>
  27. <goal>jar</goal>
  28. </goals>
  29. <configuration> <!-- add this to disable checking -->
  30. <additionalparam>-Xdoclint:none</additionalparam>
  31. </configuration>
  32. </execution>
  33. </executions>
  34. </plugin>
  35. <!-- 使用source 进行jar打包-->
  36. <plugin>
  37. <groupId>org.apache.maven.plugins</groupId>
  38. <artifactId>maven-source-plugin</artifactId>
  39. <version>3.0.1</version>
  40. <executions>
  41. <execution>
  42. <id>attach-sources</id>
  43. <goals>
  44. <goal>jar-no-fork</goal>
  45. </goals>
  46. </execution>
  47. </executions>
  48. </plugin>
  49. <!-- GPG -->
  50. <plugin>
  51. <groupId>org.apache.maven.plugins</groupId>
  52. <artifactId>maven-gpg-plugin</artifactId>
  53. <version>1.6</version>
  54. <executions>
  55. <execution>
  56. <phase>verify</phase>
  57. <goals>
  58. <goal>sign</goal>
  59. </goals>
  60. </execution>
  61. </executions>
  62. </plugin>
  63. </plugins>
  64. </build>

执行命令上传到仓库

管理员身份打开 cmd 进入项目命令执行命令,注意在idea 编辑器中的终端无法执行 gpg 命令,无法进行上传操作

mvn clean deploy

看到很多上传成功的信息,其中有自己的jar包 就表示成功了
注意: 如果自己的jar后面跟了当前日期不会上传到存储库,jar版本不能带有 开发版的英文后缀
如果失败可以参考https://www.yuque.com/liangrui-ndqcn/fb5pya/qos9hs

验证并发布

查看发布jar包
此时进入https://s01.oss.sonatype.org/#welcome查看发布好的构件,点击左侧的Staging Repositories,可以使用Group Id或其他信息搜索自己的项目。

如果弹出用户名或密码,则输入注册sonatype时对应的用户和密码信息。

此时需注意,如果项目中版本信息为1.0.0-SNAPSHOT,即SNAPSHOT为后缀,则发布的项目位于Snapshots目录下。在左上角的Artifact Search中能够搜到。

如果是Release后缀,则可直接在Staging Repositories中看到(有可能要稍等一下,等待平台处理)。

image.png

选中对于的repository之后,点击的close,close时会检查发布的构件是否符合要求。若符合要求,则close成功,成功之后点击箭头所指的release,即可正式将jar包发布到Sonatype OSSRH仓库。

个人发布maven镜像 - 图8

当点击Release之后,邮件中会收到Issues变化的信息,提示同步已经被激活,正常10分钟就可以更新同步。

个人发布maven镜像 - 图9

release成功大概2个小时之后,该构件就会同步到Maven中央仓库,届时会有邮件通知。
个人发布maven镜像 - 图10
实践过程中发现十分钟之内已经成功同步到https://repo1.maven.org/的中央仓库当中。