【maven】手把手教你如何把自己的Jar上传到maven中央仓库

【maven】手把手教你如何把自己的Jar上传到maven中央仓库,第1张

【maven】手把手教你如何把自己的Jar上传到maven中央仓库

前言:近期开源了Mybatis-Plus的Es版(ElasticSearch):Easy-Es,在框架正式上线Maven中央仓库的过程中,困难重重,经过多次努力,总算是成功上架了.

尽管目前网上不乏这类教程,但都已经过时了,现在Maven中央仓库的上传地址以及首次上传的规则都有更新(2021年官方换了新版),按前人那些老方式,不仅不能帮你上传成功,还会让你走很多弯路,误入歧途,所以特开此文,帮助有需要的同胞,少走弯路.


先来说一下首次上传的核心步骤,由于步骤中的过程相对较复杂,所以先抽象下基本思路,再展开讲解,避免大家看不懂.

抽象步骤:

  • 注册账号
  • 提交工单
  • 人工审核及确认
  • 上传SNAPSHOT版本
  • 上传release版本

画了张流程图,过程大致如下:


目录

1.注册账号

2.创建Issue

3.确认邮件

4.上传至中央仓库

4.1 我先演示上传SNAPSHOT的步骤

配置秘钥:

②配置settings.xml

③配置Pom.xml

④上传

4.2 上传release版本

①settings.xml

②Pom.xml

③发布

5.后续

 6.总结


1.注册账号

Sign up for Jira - Sonatype JIRA

密码要求比较高,大小写数字符号啥的都要有,所以务必要记住此密码,记不住的事先保存好,后面要经常用到账号和密码.

2.创建Issue

用上面创建的账号密码登录后,点击页面上方导航栏的Create按钮创建Issue:

 

 通过以上两个步骤,你的工单就被创建完成了,接下来就耐心等待工作人员审核,由于美国和中国的时差,所以基本上大部分时候回复你都是23:00以后,注意留意你注册账号时填写的邮箱,回复内容会在邮箱里通知你.

3.确认邮件

在收到工作人员的确认邮件后,在邮件内容中他们通常会要求验证你填写的groupId中的域名或github账户是不是你本人的

  • 如果你填写的是域名,他们会要去你用该域名的邮箱给他们发一封邮件进行确认
  • 如果你填写的是github账户,他们会要求你在你的github中创建一个指定名称的仓库进行验证(如下图,按要求去创建即可)

 创建好并确认无误后,你需要将此Iusse的状态置为Open,然后他们系统会自动去完成验证.

4.上传至中央仓库

官方验证此域名/账户确实是你本人的之后,会再次发送邮件给你,告诉你你的仓库已经被激活了,此时你需要按照他们的要求,分别上传你项目的SNAPSHOT和release版本至指定地址:

4.1 我先演示上传SNAPSHOT的步骤

如果步骤走不下去,请务必查阅官方文档,以官方文档为准,因为可能会有更新,我就是因为照着网上那些旧的教程走不下去了,最后靠官方文档才完美解决所有问题的.需要一定的英文文档阅读能力,如果英文不好可以先按我贴出来的步骤进行,或用谷歌翻译插件.

 参考文档地址:OSSRH Guide - The Central Repository documentation

 流程:配置秘钥->配置settings.xml->配置pom.xml->上传

①配置秘钥:

下载并安装GPG:

https://www.gnupg.org/download/index.html

根据你电脑当前系统选择合适的安装包下载并安装,安装按默认勾选的配置一路安装即可.

生成秘钥有两种方式,敲命令和UI界面两种,这里仅演示通过命令创建的方式

 生成:

gpg --gen-key
 Real name: 名字(E文)(我填了xingpengcheng)
 Email address: 邮箱(自己的邮箱,我的是[email protected])
 You selected this USER-ID:
 "xxx[[email protected]](mailto:[email protected])"
 Change (N)ame, (E)mail, or (O)kay/(Q)uit? o
 之后往下,会让你输入用户名和邮箱,还有一个Passphase(输入两次,务必牢记,建议先找个地方记下来,后续要用到)

查看公钥
gpg --list-keys

查询结果:
C:/Users/Laohan/AppData/Roaming/gnupg/pubring.kbx
--------------------------------------------------
pub   rsa2048 2020-06-06 [SC] [expires: 2022-06-06]
      85B594371E0A38D70243B1E927EDC1D952E45334
uid           [ultimate] xingpengcheng <[email protected]>
sub   rsa2048 2020-06-06 [E] [expires: 2022-06-06]
    
其中85B594371E0A38D70243B1E927EDC1D952E45334就是你的公钥key
发布公钥:
gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys 85B594371E0A38D70243B1E927EDC1D952E45334
查询发布公钥是否成功
gpg --keyserver hkp://keyserver.ubuntu.com:11371 --recv-keys 85B594371E0A38D70243B1E927EDC1D952E45334

成功的话会有如下结果
gpg: key 27EDC1D952E45891: "xingpengcheng <[email protected]>" not changed
gpg: Total number processed: 1
gpg:              unchanged: 1
②配置settings.xml

找到你IDEA自带或者你安装的Maven所在的目录:

File->settings->Build->Maven->MavenHomePath,进入此目录在conf文件夹下就可以看到settings.xml文件,如果没有的话可以自己新建一个.

然后在其中加入配置:

  
	  
        ossrh
        [email protected](SonaType账号)
        填你注册SonaType时填写的密码
	  
  

  
    
      ossrh
      
        true
      
      
        
        C:/Program Files (x86)/GnuPG/bin/gpg.exe
        填写你生成秘钥时输入的密码
        
        C:/Users/laohan/.gnupg
      
    
  
③配置Pom.xml

以下配置信息已为最精简版,省略了无关内容,且加了注释,方便读者理解:

    
    io.github.xpc1024
    easy-es-parent
    
    0.9.3-SNAPSHOT

    
    easy-es-parent
    easy use for elastic search
    https://github.com/xpc1024/easy-es

    
    
        
            The Apache Software License, Version 2.0
            http://www.apache.org/licenses/LICENSE-2.0.txt
        
    

    
    
        
            xpc
            xpc
            [email protected]
            
                Project Manager
                Architect
            
            +8
        
    
    
    
    
        https://github.com/xpc1024/easy-es.git
        scm:git:ssh://[email protected]:xpc1024/easy-es.git
        https://github.com/xpc1024/easy-es
    

    
        
            
            ossrh
            
                true
            
            
                
                
                    
                        org.sonatype.plugins
                        nexus-staging-maven-plugin
                        1.6.7
                        true
                        
                            ossrh
                            https://s01.oss.sonatype.org/
                            true
                        
                    
                       
                    
                    
                        org.apache.maven.plugins
                        maven-source-plugin
                        2.2.1
                        
                            
                                attach-sources
                                
                                    jar-no-fork
                                
                            
                        
                    
                    
                    
                    
                        org.apache.maven.plugins
                        maven-javadoc-plugin
                        2.9.1
                        
                            
                                attach-javadocs
                                
                                    jar
                                
                            
                        
                    

                    
                    
                        org.apache.maven.plugins
                        maven-gpg-plugin
                        1.5
                        
                            
                                sign-artifacts
                                verify
                                
                                    sign
                                
                            
                        
                    

                
            
            
            
                
                   
                   ossrh
                   https://s01.oss.sonatype.org/content/repositories/snapshots
                
                
                    ossrh
              https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/
                
            
        

    

完成上述配置,你已经基本上走完了80%的步骤了,此时,你可以通过Maven尝试打包一下你的项目:

clean,package

 如果都成功了,那说明万事具备了,接下来你就可以上传了,没有成功的也别气馁,按照Maven打包时报的错误依次去解决即可,我当时在打包这步就出错了,因为没有按规范写方法上的注释,导致API文档打包失败.

④上传

clean,deploy 然后会d出对话框让你输入生成gpg时填写的密码,然后d出的确认对话框都敲回车,耐心等待上传,完成后你可以在控制台看到SUCCESS,至此,SNAPSHOT版本已被上传至中央SNAPSHOT仓库,可以在浏览器访问Nexus Repository Manager,登录后查看.

4.2 上传release版本

整体流程和上传SNAPSHOT版本一致,下面仅贴出差异点:

①settings.xml
release
②Pom.xml
0.9.3


release
                
                    
                        org.sonatype.plugins
                        nexus-staging-maven-plugin
                        1.6.7
                        true
                        
                            ossrh
                            https://s01.oss.sonatype.org/
                            true
                        
                    

                    
                    
                        org.apache.maven.plugins
                        maven-release-plugin
                        2.5.3
                        
                            true
                            false
                            release
                            deploy
                        
                    
                
③发布

clean,deploy 然后耐心等待成功,因为这是你第一次上传release包至中央仓库,所以他们平台的机器人会自动帮你同步(在他们回复你的ISSUE里也提到了这点,同步触发的前提是SNAPSHOT和release版本都已正确上传至中央仓库)

上传成功后,可在官网查看到:

Nexus Repository Manager

在完成了SNAPSHOT和release版本上传之后,你会收到系统发来的邮件:

大致就是告诉你你已经成功完成了首次上传,你上传的项目会在30分钟以内同步到中央仓库中,届时你可以在Central Repository:中找和下载.

4小时内你可以在  Maven Central Repository Search中搜索到.

至此,恭喜你已首次完成将项目发布至中央仓库.

5.后续

在之后,随着你项目的迭代,你可能需要发布新的版本至中央仓库,此时你可以跳过上传SNAPSHOT,直接上传release版本至中央仓库,由于非首次发布,他们的机器人也不再会帮助你自动同步了,此过程需要你手动触发,在上传完release包之后,打开官方页面,进入 *** 作,具体流程如下图:

Nexus Repository Manager

6.总结

总体来看,要想把项目发布至中央仓库,还是比较复杂的,需要一定的英文阅读能力,需要有耐心,过程中肯定有各种各样的小问题需要你去解决,毕竟项目不一样,版本不一样,网上搜来的教程只能给你一定的参考,有些因为时间和版本原因不仅不能帮助你,还可能给你误导,所以我强烈建议,具体的流程还是参考官网文档比较靠谱,大致的流程可以参考本文或是网上其它教程,这样可以帮你少踩很多.

参考项目: Easy-Es

创作不易,希望可以收获你们的点赞,关注,评论三连,再次感谢您的来访!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5682632.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存