原文网址:maven--将jar包上传到maven中央仓库(公库)-CSDN博客
本文介绍怎样将jar包上传到maven中央仓库(公库)。
当自己有一些公共组件时,上传到maven公库是最好的,这样项目里直接引用即可,不需要在多处修改,而且所有人都可以直接使用。
本文环境是:Windows系统,maven3,java8,Idea2023。
网址:Sign up for Jira - Sonatype JIRA
注意:用户名一定要用英文的。
Maven 用 groupid 来标识项目空间,用域名逆序的方式命名。下面是两种命名的例子,如果有自己的域名,直接使用就可以;如果没有,可以使用 github 等代码托管服务的域名。
下面是支持个人 groupid 的代码托管服务,假设使用 io.github.myusername ,需要创建一个名为 OSSRH-序列码的公开仓库进行验证(验证成功后可删除)。如果使用自己的域名,后边需要添加 TXT 解析,让maven中央仓库知道你是域名的所有者。
服务 | groupid | 相关文档 |
---|---|---|
GitHub | io.github.myusername | https://pages.github.com/ |
GitLab | io.gitlab.myusername | https://about.gitlab.com/stages-devops-lifecycle/pages/ |
Gitee | io.gitee.myusername | https://gitee.com/help/articles/4136 |
Bitbucket | io.bitbucket.myusername | https://support.atlassian.com/bitbucket-cloud/docs/publishing-a-website-on-bitbucket-cloud/ |
SourceForge | io.sourceforge.myusername | https://sourceforge.net/p/forge/documentation/Project%20Web%20Services/ |
假设我本处准备的域名是:abc.com。
新建工单
进入JIRA主页,点击新建:
填写相应内容
概要的那句话是:
Create and upload project
描述里的那句话是:
Hello, I want to create a new project, and upload to maven center repo.
继续往下滑,还有其他要填写的内容:
然后点击下方的创建
创建后可以看到问题编号:
此时,你会收到一封邮件:通知你成功创建了一条JIRA工单。
过了几分钟后,我收到了Sonatype JIRA的邮件,说我收到了一条评论。
点击上边JIRA里创建的JIRA(菜单栏=> 问题),即可看到评论信息:
1.添加DNS记录
修改DNS,添加一条TXT记录(验证成功后,这个DNS记录删除即可)。
将上边的评论里的OSSRH-xxx复制一下,把它添加到DNS的TXT(主机记录是@,记录值是OSSRH-xxx)
2.告诉工作人员已经添加
这里我的回复是:I hava added a DNS TXT record to my domain.
3.工作人员回复
工作人员审核验证完之后会回复你,工单状态会变为“已解决”,就可以上传maven项目了。
一个小时后,邮件里说我收到了JIRA回复,查看JIRA,收到的回复如下:
工单状态变成了“已解决”
下载地址
https//www.gnupg.org/download/
gpg --version
生成密钥
gpg --gen-key
提示输入名字和邮箱。输入后,再输入O,回车。然后会弹出要输入密码,这里的密码一定要记住,后边要用。(密码是为了保护私钥用的)
红色箭头即生成的公钥,后边要用(密钥有效期为3年,到时要用密码延长有效期(重新生成也可以))。
发送公钥
gpg --keyserver keyserver.ubuntu.com --send-keys 你的公钥
本处我是:
gpg --keyserver hkp://keyserver.ubuntu.com --send-keys 6C1D0E2XXXXXXXXXEC423
如下:
查看公钥
等几分钟,验证公钥是否发布成功:
gpg --keyserver keyserver.ubuntu.com --recv-keys 6C1D0E2XXXXXXXXXEC423
如下:
备注:
忘记了公钥,也可以通过gpg --list-keys查看当前所有的公钥
在不同的电脑上操作时,可以直接用现成的密钥。这就需要用导出导入功能。
导出
导出公钥
命令格式:
gpg -a -o public-file.key --export keyId : 导出公钥keyId 到 文件 public-file.key中;
-a 为 --armor 的简写,表示密钥以ASCII的形式输出,默认以二进制的形式输出;
-o 为 --output 的简写,指定写入的文件;
gpg -a -o public-file.key --export 6C1D0E2XXXXXXXX7CE3EC423
导出私钥(导出私钥需要输入之前设置的保护私钥密码)
gpg -a -o private-file.key --export-secret-keys 6C1D0E2XXXXXXXX7CE3EC423
导入
导入公钥
gpg --import public-file.key
导入私钥(导入私钥需要输入保护私钥的密码)
gpg --import private-file.key
添加如下内容
ossrh
JIRA用户名
JIRA密码
ossrh
D:/Program Files (x86)/GnuPG/bin/gpg.exe
下边标记了“用于发布”的,都是要与发布JAR包有关的配置。
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.4.13
com.abc
test-util
0.0.1-SNAPSHOT
jar
{project.artifactId}
test-util
org.springframework.cloud
spring-cloud-dependencies
2020.0.1
pom
import
org.springframework.boot
spring-boot-starter-web
provided
org.springframework.boot
spring-boot-starter-validation
org.projectlombok
lombok
true
provided
org.apache.maven.plugins
maven-compiler-plugin
8
ossrh
true
ossrh
https://s01.oss.sonatype.org/content/repositories/snapshots
ossrh
https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/
org.sonatype.plugins
nexus-staging-maven-plugin
1.6.8
true
ossrh
https://s01.oss.sonatype.org/
true
org.apache.maven.plugins
maven-source-plugin
3.2.1
attach-sources
package
jar-no-fork
org.apache.maven.plugins
maven-javadoc-plugin
3.1.1
UTF-8
UTF-8
UTF-8
-Xdoclint:none
attach-javadocs
jar
org.apache.maven.plugins
maven-gpg-plugin
1.6
sign-artifacts
verify
sign
The Apache Software License, Version 2.0
https://www.apache.org/licenses/LICENSE-2.0.txt
https://github.com/xxx/test-util
https://github.com/xxx/test-util.git
xxx
xxx
[email protected]
https://github.com/xxx
https://s01.oss.sonatype.org/
进去后,右上角有个登录。用第1步里注册的JIRA账号密码登录即可。
搜索一下自己的jar包,如下图所示:(成功上传到了Snapshots仓库)
大概过四个小时后,可以在中央仓库搜索到。
新地址:https://central.sonatype.com/
老地址:https://search.maven.org/
snapshot发布后,没有邮件通知。
之后可以在项目中直接引用
com.abc
test-util
0.0.1-SNAPSHOT
上边是snapshot版本,下边看正式版本的发布。
将版本号0.0.1-SNAPSHOT改为:0.0.1。然后重新点击IDEA的maven clean和maven deploy
发布成功后,会收到JIRA的邮件:
查看发布结果
因为在 maven 插件 nexus-staging-maven-plugin 中 autoReleaseAfterClose 设置为 true 了,所以会自动上传到 staging repository ,并且自动执行了 close=>release=>drop 三步曲(即:自动release)。
在仓库里搜索
大概过四个小时后,可以在中央仓库搜索到。
新地址:https://central.sonatype.com/
老地址:https://search.maven.org/
再过一两个小时,就可以在阿里仓库和mvnrepository搜到了。
之后可以在项目中直接引用
com.abc
test-util
0.0.1
第一次发布时,上边所有步骤都要做。以后再发布时,只操作第6步即可!