准备
- GitHub的账户
- 注册Sonatype的账户
https://issues.sonatype.org/secure/Signup!default.jspa
下载GPG
https://www.gnupg.org/download/
4.配置maven项目的发布申请
创建问题,填写内容。
这里要注意一下:group id,最好填io.github.xxx
提交完成之后,会创建一个Issues,内容显示如下:
这里需要注意一下注释,他会提示你需要做的一些工作,下面是我创建成功后的一些提示改groupid
- 在github创建一个OSSRH-8028的id
安装并配置GPG
发布到Maven仓库中的所有文件都要使用GPG签名,以保障完整性。因此,我们需要在本地安装并配置GPG。
1、GPG安装
下载地址: https://www.gnupg.org/download/
下载后傻瓜式安装即可
使用管理员身份打开 cmd,执行命令 gpg —version ,判断是否安装成功
2、生成密钥
使用管理员身份打开 cmd
执行命令:
gpg --gen-key
把 key 发送到中央仓库服务器,后面上传会做权鉴
gpg --keyserver keyserver.ubuntu.com --send-keys B34ACF782ABE8FD3
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
<server>
<id>sonatype-nexus-snapshots</id>
<username>Sonatype账号</username>
<password>Sonatype密码</password>
</server>
配置项目的pom.xml
根据Sonatype OSSRH的要求,以下信息都必须配置:
- Supply Javadoc and Sources
- Sign Files with GPG/PGP
- Sufficient Metadata
- Correct Coordinates
- Project Name, Description and URL
- License Information
- Developer Information
-
增加开源许可协议,SCM信息,开发者信息等待根据自己信息填写即可。
```java
The Apache Software License, Version 2.0 http://www.apache.org/licenses/LICENSE-2.0.txt repo https://github.com/wslxm/spring-boot-plus2 scm:https://github.com/wslxm/spring-boot-plus2.git scm:https://github.com/wslxm/spring-boot-plus2.git wangsong 1720696548@qq.com +8 ossrh https://s01.oss.sonatype.org/content/repositories/snapshots/ ossrh https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/
<a name="fKzAK"></a>
## pom.xml 增加打包配置
```java
<build>
<plugins>
<!-- spring boot 项目复用需要添加的内容 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<!-- java-doc配置 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.10.4</version>
<configuration>
<aggregate>true</aggregate>
</configuration>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
<configuration> <!-- add this to disable checking -->
<additionalparam>-Xdoclint:none</additionalparam>
</configuration>
</execution>
</executions>
</plugin>
<!-- 使用source 进行jar打包-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.0.1</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</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>
执行命令上传到仓库
管理员身份打开 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中看到(有可能要稍等一下,等待平台处理)。
选中对于的repository之后,点击的close,close时会检查发布的构件是否符合要求。若符合要求,则close成功,成功之后点击箭头所指的release,即可正式将jar包发布到Sonatype OSSRH仓库。
当点击Release之后,邮件中会收到Issues变化的信息,提示同步已经被激活,正常10分钟就可以更新同步。
release成功大概2个小时之后,该构件就会同步到Maven中央仓库,届时会有邮件通知。
实践过程中发现十分钟之内已经成功同步到https://repo1.maven.org/的中央仓库当中。