0%

Maven 发布中央仓库

Maven 中央仓库是由 Sonatype 维护的,提交流程比较尴尬,我们需要使用他的 JIRA 系统,通过提交 Issue 来进行发布流程。

Sonatype 地址是:https://issues.sonatype.org/secure/Dashboard.jspa

注册 Sonatype 账户

需要先注册一个账户,这个账户需要牢记,因为需要在接下来 Maven 的 setting.xml 中的配置,以及登陆 oss.sonatype 都要用到。

创建一个 Community Support Issue

Project 选择:Community Support
Isuse Type 选择:New Project
Group Id:就是我们通常 Java 中的 GroupID,如果使用域名的话,要验证域名的所有权。所以可以使用:com.github.xyz 这种。
Project URL 地址:使用 GitHub 地址即可。如:https://github.com/smallmenu/java-fun
SCM url 地址:使用 GitHub Git 地址即可。如:https://github.com/smallmenu/java-fun.git
Summary 和 Description 根据需要填写

接下来,你会进入和英文对话环节,主要是通过该 Issue 的评论进行的。

他会进行一些审查等操作。最后会告诉你:com.github.xyz has been prepared,然后就可以准备发布了。

安装 GPG

下载:https://www.gnupg.org/download/

1
2
3
gpg --version 查看版本
gpg --list-keys 查看公钥
gpg --gen-key 生成密钥对

需要将你的公钥发布到 PGP 服务器(可能会发布失败,可以网上找几个靠谱的再试试):

1
gpg --keyserver hkp://pool.sks-keyservers.net --send-keys 公钥ID

配置 Maven Setting.xml

加入 Server 段信息,用户名密码是你注册 Sonatype 的账户信息。

1
2
3
4
5
<server>
<id>oss</id>
<username>username</username>
<password>xxx</password>
</server>

配置项目的 pom.xml 文件

除了常规的配置,增加一些配置。

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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
<developers>
<developer>
<name>smallmenu</name>
<email>smallmenu@gmail.com</email>
</developer>
</developers>

<scm>
<connection>scm:git@github.com:smallmenu/java-fun.git</connection>
<developerConnection>scm:git@github.com:smallmenu/java-fun.git</developerConnection>
<url>git@github.com:smallmenu/java-fun.git</url>
</scm>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>${compile.version}</source>
<target>${compile.version}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.1.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.1</version>
<executions>
<execution>
<id>default-deploy</id>
<phase>deploy</phase>
<goals>
<goal>deploy</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

<distributionManagement>
<snapshotRepository>
<id>oss</id>
<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
</snapshotRepository>
<repository>
<id>oss</id>
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement>

<profiles>
<profile>
<id>release</id>
<properties>
<maven.test.skip>true</maven.test.skip>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-help-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<id>show-profiles</id>
<phase>compile</phase>
<goals>
<goal>active-profiles</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<id>oss</id>
<phase>package</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.7</version>
<configuration>
<formats>
<format>html</format>
<format>xml</format>
</formats>
<check/>
</configuration>
</plugin>
<!-- Gpg Signature -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<id>oss</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.8</version>
<extensions>true</extensions>
<configuration>
<serverId>oss</serverId>
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
<autoReleaseAfterClose>true</autoReleaseAfterClose>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>

发布项目

1
mvn clean install deploy -P release

登陆验证 oss.sonatype

同样使用注册的 Sonatype 账户登陆 https://oss.sonatype.org/

如果执行成功,在这里能看到你发布的项目版本和信息。

发布成功后就可以搜索到,以我的仓库为例:

1
2
3
4
5
<dependency>
<groupId>com.github.smallmenu</groupId>
<artifactId>java-fun</artifactId>
<version>0.x.x</version>
</dependency>