0%

maven上传至中央仓库

在gitee上写了一个工具包,想让别人也使用,那就不能每次都打包到本地仓库,所以就需要上传至中央仓库。下面就记录一下如何上传到中央仓库

第一步:注册Sonatype账号

Sonatype通过JIRA来管理OSSRH仓库

注册地址:https://issues.sonatype.org/secure/Signup!default.jspa

注册页

Username是登录名称,Password为登录密码

第二步:项目发布申请

点击新建

项目要选择“Community Support”项,对应的问题类型选择“New Project”

新建项目

提交完成之后,会创建一个Issues

issue详细

过几分钟会有官方审核人员对该Issues进行回复,需要对GroupId进行验证,回复中有两种方式来进行验证

方式一:DNS域名解析中添加一个对应的TXT记录

验证方式一

方式二:如果没有自己的域名,可以使用gitee域名,要求是创建一个对应的公共仓库

验证方式二

这里由于我有域名,就选择了方式一。进行对应操作后,回复评论再将状态置为开启。

在经过一段时间的等待,官方审核人员验证通过后,就会审核完成。

第三步:配置自己的maven项目

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

下载地址 https://gpgtools.org/

下载安装完成后创建

创建gpg

创建完成后会弹出是否上传到公钥,这里要上传,否则maven无法验证gpg密钥

第四步:配置settings.xml

在maven的settings.xml文件中配置对应的sonatype账号

1
2
3
4
5
<server>
<id>ossrh</id>
<username>Sonatype账号</username>
<password>Sonatype密码</password>
</server>

第五步:配置项目的pom.xml

Sonatype OSSRH校验要求配置描述、url、开源协议、SCM信息以及作者信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

<description>工作中用到的一些工具</description>
<url>https://gitee.com/SiXiangPiaoFuZhe/tools-java</url>

<licenses>
<license>
<name>BSD 3-Clause</name>
<url>https://spdx.org/licenses/BSD-3-Clause.html</url>
</license>
</licenses>
<scm>
<connection>https://gitee.com/SiXiangPiaoFuZhe/tools-java.git</connection>
<url>https://gitee.com/SiXiangPiaoFuZhe/tools-java</url>
</scm>
<developers>
<developer>
<name>zhanghe</name>
<email>13512966953@163.com</email>
<roles>
<role>Developer</role>
</roles>
<timezone>+8</timezone>
</developer>
</developers>

配置对应的插件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<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.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.8</version>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://s01.oss.sonatype.org/</nexusUrl>
<!-- 设置为true后,close时会自动进行Release。我先设为false,自己体验了一把过程,顺便按照要求把验证过了。因为一开始 开源协议、SCM信息以及作者信息都没填 -->
<autoReleaseAfterClose>true</autoReleaseAfterClose>
</configuration>
</plugin>

<!-- Source -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.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-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
<!-- Javadoc -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.5.0</version>

<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<!-- 忽略注释错误 -->
<doclint>none</doclint>
</configuration>
</execution>
</executions>
</plugin>

<!-- 发布到Maven仓库中的所有文件都要使用GPG签名,以保障完整性。我们需要在本地安装并配置GPG。 -->
<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>
<configuration>

<keyname>${gpg.keyname}</keyname>
<passphraseServerId>${gpg.keyname}</passphraseServerId>
</configuration>
</execution>
</executions>
</plugin>

</plugins>
</build>

第六步:Close&Release操作

这里是<autoReleaseAfterClose>false</autoReleaseAfterClose> 时的操作。建议第一次操作设置为false。

1
mvn clean deploy

有时上传之后检验可能没过,会报错

Failed to execute goal org.sonatype.plugins:nexus-staging-maven-plugin:1.6.8:deploy (injected-nexus-deploy) on project tools-java: Could not perform action: there are failing staging rules!

上传之后,jar包会放到staging暂存库中,我们需要将其发布到release库

登录 https://s01.oss.sonatype.org/

close

上述插件上传至staging后会自动将状态置为close,close后系统会进行规则校验

rule

校验通过就可以点击Release来发布至Release,如果检验不通过,就按照提示内容来进行修改

Release

第一次发布成功后,在创建项目的issue上会有新的评论

sync

半小时之内中央仓库中就会存在该依赖了,四小时后再search.maven.org中也就可以搜索到了

search

欢迎关注我的其它发布渠道