将我的java程序组件部署到maven中央仓库

前一阵子工作有点忙,也比较焦虑。没有时间写一些博客文章,今天来补充一下。

想要解锁更多新姿势?请访问我的博客。😏

做点什么?

面临毕业,不想一直咸鱼,可是又什么都不会,做点什么的?思来想去,也是为了给自己少一点麻烦,就决定把自己半年前那个秒杀商城项目重构一下,放到云平台上。不过既然都是云平台了,肯定会有各种支撑服务,就譬如说缓存中心,日志中心,监控中心,权限管理中心等等,但是这些功能,在别的项目中也可以用到,这就带来一些不必要的麻烦。

这时候,就推荐使用maven来统一管理了。

前些日子,趁着毕业生创业指导开课的时候,我把缓存中心敲完了。然后将他部署到maven中央仓库。下面我就来分享一下部署到中央仓库的那些坑🕳。

部署到中央仓库

准备工作

  • 打开浏览器, sonatype 官网,这个地址,注册一个账号,并且记住用户名密码

  • 下载好git客户端

提交issue

https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134 中新建一个“Project ticket”。

下面引以下Spiderman.L大佬博客上的图片(太懒了不想重新填一遍),照着这个步骤来。

怎么填

  点击Create之后,你就会进入一个 jira 页面(sonatype 使用jira 来追踪每一个项目进度),与此同时你注册时使用的邮箱中也会收到一封邮件提示你,任务创建成功,正在等待处理。

等待时间

创建完毕后就等待一段时间,刷新页面。当状态变为“resolved”,然后你就可以使用maven上传项目了。或者就等着接收 sonatype的反馈邮件,确认已经为你创建好了新项目

等待时间

回复commit

发布完后,可能几分钟,也可能几小时,会有工作人员问你是否有Group Id对应的那个域名的所有权,如果有的话就回复有,并且按照他说的三个方法来(下图为参考语句),然后就会得到Configuration has been prepared的回复,这个时候就可以准备发布了。

1

我用的是第一个方法,因为我的域名是从阿里云上买的,我在阿里云平台的域名管理中心处,添加了一个TXT记录到这个ticket上,这样他会自己检测。

当然了,如果自己没有域名的话可以挂在开源的域名下面,例如com.github.tengshe789,这样一样可以发布。

最差的方法,就是用个人域名邮箱发送给他邮件。

获得部署权限

做完上一步,他会在美国工作日时间里回复部署的相关信息,如图:

2

当我们的ticket最终状态变为Resolved的时候,表示我们有权限可以上传东西了。

maven本地设置

找到你安装maven的目录下面,打开maven目录\conf\settings.xml文件。在servers标签中填写如下信息

1
2
3
4
5
6
7
8
9
10
11
12
<servers> 
<server>
<id>sonatype-nexus-snapshots</id>
<username>tengshe789(我的用户名)</username>
<password>(我的sonatype密码)</password>
</server>
<server>
<id>sonatype-nexus-staging</id>
<username>tengshe789(我的用户名)</username>
<password>(我的sonatype密码)</password>
</server>
</servers>

java程序pom.XML设置

按照下面代码添加。

1
2
3
4
5
<scm>
<connection>scm:git:https://github.com/tengshe789/miaocache.git</connection> <developerConnection>scm:git:https://github.com/tengshe789/miaocache.git</developerConnection>
<url>https://github.com/tengshe789/miaocache</url>
<tag>0.0.1</tag>
</scm>

这些地址填的是你github上的地址。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<distributionManagement>
<snapshotRepository>
<!-- 这个id与我上一步在setting.xml中设置的id一致的 -->
<id>sonatype-nexus-snapshots</id>
<name>OSS Snapshots Repository</name>
<!-- 这里的url就是Issue中回复的snapshots 的repo地址-->
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<!-- 这个id与我上一步在setting.xml中设置的id一致的 -->
<id>sonatype-nexus-staging</id>
<name>OSS Staging Repository</name>
<!-- 这里的url就是Issue中回复的staging 的repo地址-->
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2</url>
</repository>
</distributionManagement>

这些地址直接复制上就行。

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
    <build>
<finalName>${project.name}</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot.version}</version>
<configuration>
<finalName>${project.build.finalName}</finalName>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<target>${maven.compiler.target}</target>
<source>${maven.compiler.source}</source>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>

<repositories>
<!--阿里云主仓库,代理了maven central和jcenter仓库-->
<repository>
<id>aliyun</id>
<name>aliyun</name>
<url>https://maven.aliyun.com/repository/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<!--阿里云代理Spring 官方仓库-->
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://maven.aliyun.com/repository/spring</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<!--阿里云代理Spring 插件仓库-->
<pluginRepository>
<id>spring-plugin</id>
<name>spring-plugin</name>
<url>https://maven.aliyun.com/repository/spring-plugin</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>

<profiles>
<profile>
<id>release</id>
<build>
<plugins>
<!-- Source -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Javadoc -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<distributionManagement>
<snapshotRepository>
<id>sonatype-nexus-snapshots</id>
<name>OSS Snapshots Repository</name> <url>https://oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>sonatype-nexus-staging</id>
<name>OSS Staging Repository</name>
<!-- 这里的url就是Issue中回复的staging 的repo地址--> <url>https://oss.sonatype.org/service/local/staging/deploy/maven2</url>
</repository>
</distributionManagement>
</profile>
</profiles>
</project>

下面地址是通用的插件和profiles配置,不能少,按照需求来设置。有能力的同学自己研究一下。

使用gpg生成密钥

打开git窗口,输入gpg --gen-key。这时候会出现一大片英文,看不懂的同学不要紧,跟着我做就行。

1
gpg --list-keys

这个命令是查看自己key的编号。找到 pub对应的那个编号,例如pub 2048R/8C473F5C
上传到key验证库:

1
gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys 8C473F5C

maven命令

打开idea,找到下面的终端,输入maven命令。

1
mvn clean deploy -P sonatype-oss-release -Darguments="gpg.passphrase=设置gpg设置密钥时候输入的Passphrase"

参考资料

https://www.cnblogs.com/aimqqroad-13/p/9645776.html

https://blog.csdn.net/sun5769675/article/details/78519948

https://www.jianshu.com/p/bb930e9ad5f4

结束

【版权申明】此片为原创内容,使用 CC BY-NC-SA 3.0授权条款,请遵守对应的义务,即被授权人有义务在所有副本中都必须包含版权声明。谢谢合作~

想要解锁更多新姿势?请访问我的个人博客https://blog.tengshe789.tech/(😘

-------------本稿が終わる感谢您的阅读-------------