maven--将jar包上传到maven中央仓库(公库)

原文网址:maven--将jar包上传到maven中央仓库(公库)-CSDN博客

简介

本文介绍怎样将jar包上传到maven中央仓库(公库)。

当自己有一些公共组件时,上传到maven公库是最好的,这样项目里直接引用即可,不需要在多处修改,而且所有人都可以直接使用。

本文环境是:Windows系统,maven3,java8,Idea2023。

1.注册Sonatype JIRA账号

网址:Sign up for Jira - Sonatype JIRA

注意:用户名一定要用英文的。 

maven--将jar包上传到maven中央仓库(公库)_第1张图片

2.准备groupid

Maven 用 groupid 来标识项目空间,用域名逆序的方式命名。下面是两种命名的例子,如果有自己的域名,直接使用就可以;如果没有,可以使用 github 等代码托管服务的域名。

  1. www.springframework.org => org.springframework
  2. subdomain.example.com => com.example
  3. my-domain.com => com.my-domain
  4. github.com/abc => io.github.abc

下面是支持个人 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。

3.创建JIRA工单

1.创建JIRA工单

新建工单

进入JIRA主页,点击新建:

maven--将jar包上传到maven中央仓库(公库)_第2张图片

填写相应内容 

maven--将jar包上传到maven中央仓库(公库)_第3张图片

概要的那句话是:

Create and upload project

描述里的那句话是:

Hello, I want to create a new project, and upload to maven center repo.

继续往下滑,还有其他要填写的内容:

maven--将jar包上传到maven中央仓库(公库)_第4张图片

然后点击下方的创建

maven--将jar包上传到maven中央仓库(公库)_第5张图片

创建后可以看到问题编号:

maven--将jar包上传到maven中央仓库(公库)_第6张图片

此时,你会收到一封邮件:通知你成功创建了一条JIRA工单。 

2.收到评论

过了几分钟后,我收到了Sonatype JIRA的邮件,说我收到了一条评论。

点击上边JIRA里创建的JIRA(菜单栏=> 问题),即可看到评论信息:

maven--将jar包上传到maven中央仓库(公库)_第7张图片

4.验证域名

1.添加DNS记录

修改DNS,添加一条TXT记录(验证成功后,这个DNS记录删除即可)。

将上边的评论里的OSSRH-xxx复制一下,把它添加到DNS的TXT(主机记录是@,记录值是OSSRH-xxx) 

2.告诉工作人员已经添加

maven--将jar包上传到maven中央仓库(公库)_第8张图片

这里我的回复是:I hava added a DNS TXT record to my domain. 

3.工作人员回复

工作人员审核验证完之后会回复你,工单状态会变为“已解决”,就可以上传maven项目了。

一个小时后,邮件里说我收到了JIRA回复,查看JIRA,收到的回复如下:

maven--将jar包上传到maven中央仓库(公库)_第9张图片

工单状态变成了“已解决” 

maven--将jar包上传到maven中央仓库(公库)_第10张图片

5.配置GPG密钥

1.下载gpg工具

下载地址

https//www.gnupg.org/download/

maven--将jar包上传到maven中央仓库(公库)_第11张图片

maven--将jar包上传到maven中央仓库(公库)_第12张图片

maven--将jar包上传到maven中央仓库(公库)_第13张图片

maven--将jar包上传到maven中央仓库(公库)_第14张图片

gpg --version

maven--将jar包上传到maven中央仓库(公库)_第15张图片

2.生成密钥 

生成密钥

gpg --gen-key

提示输入名字和邮箱。输入后,再输入O,回车。然后会弹出要输入密码,这里的密码一定要记住,后边要用。(密码是为了保护私钥用的)

maven--将jar包上传到maven中央仓库(公库)_第16张图片

maven--将jar包上传到maven中央仓库(公库)_第17张图片

红色箭头即生成的公钥,后边要用(密钥有效期为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查看当前所有的公钥

3.密钥导入导出

在不同的电脑上操作时,可以直接用现成的密钥。这就需要用导出导入功能。

导出

导出公钥

命令格式:

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

6.发布JAR包

1.修改settings.xml

添加如下内容


  
    
      ossrh
      JIRA用户名
      JIRA密码
    
  



  
    ossrh
    
      
      D:/Program Files (x86)/GnuPG/bin/gpg.exe
    
  


2.修改pom.xml

下边标记了“用于发布”的,都是要与发布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
                    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
        
    


3.发布

maven--将jar包上传到maven中央仓库(公库)_第18张图片

maven--将jar包上传到maven中央仓库(公库)_第19张图片4.查看发布结果

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

进去后,右上角有个登录。用第1步里注册的JIRA账号密码登录即可。

maven--将jar包上传到maven中央仓库(公库)_第20张图片

搜索一下自己的jar包,如下图所示:(成功上传到了Snapshots仓库)

maven--将jar包上传到maven中央仓库(公库)_第21张图片

大概过四个小时后,可以在中央仓库搜索到。

新地址:https://central.sonatype.com/

老地址:https://search.maven.org/

snapshot发布后,没有邮件通知。 

之后可以在项目中直接引用


  com.abc
  test-util
  0.0.1-SNAPSHOT

5.发布release版本

上边是snapshot版本,下边看正式版本的发布。

将版本号0.0.1-SNAPSHOT改为:0.0.1。然后重新点击IDEA的maven clean和maven deploy

maven--将jar包上传到maven中央仓库(公库)_第22张图片

maven--将jar包上传到maven中央仓库(公库)_第23张图片

发布成功后,会收到JIRA的邮件:

查看发布结果

因为在 maven 插件 nexus-staging-maven-plugin 中 autoReleaseAfterClose 设置为 true 了,所以会自动上传到 staging repository ,并且自动执行了 close=>release=>drop 三步曲(即:自动release)。

maven--将jar包上传到maven中央仓库(公库)_第24张图片

在仓库里搜索

大概过四个小时后,可以在中央仓库搜索到。 

新地址:https://central.sonatype.com/

老地址:https://search.maven.org/

maven--将jar包上传到maven中央仓库(公库)_第25张图片

再过一两个小时,就可以在阿里仓库和mvnrepository搜到了。

之后可以在项目中直接引用


  com.abc
  test-util
  0.0.1

总结

第一次发布时,上边所有步骤都要做。以后再发布时,只操作第6步即可!

你可能感兴趣的:(构建工具(后端),maven)