发布项目至maven中央仓库汇总(流程+问题)

https://zhuanlan.zhihu.com/p/41650855

 

和很多人一样,开发好自己的开源项目之后。希望上传至Maven中央仓库,最近折腾这个事情也是大费周章,主要源于网上太多教程和帖子复制来粘贴去。还有遇到的很多问题,没法得到很好的解决。于是我尝试成功之后,趁着记忆清晰,写下这篇教程,希望帮助更多的人。

首先感谢几篇教程,给了我不少帮助。

发布项目到Maven中央仓库的最佳实践​www.jianshu.com发布项目至maven中央仓库汇总(流程+问题)_第1张图片人类身份验证 - SegmentFault​segmentfault.com

 

下面我总结下整个过程。

发布项目需要的准备事情:

1.去sonatype申请账号,然后创建一个issue。

2.安装gpg秘钥管理工具,生成秘钥并发布。

3.maven 和pom.xml 的依赖配置和setting.xml的配置


1.sonatype申请账号

Sonatype是一个通过Nexus对开源项目提供托管服务的网站。先去

https://issues.sonatype.org/secure/Dashboard.jspa​link.jianshu.com

 

这里,可能需要,自行搭建梯子。没有账号就点击sign up注册一个。

发布项目至maven中央仓库汇总(流程+问题)_第2张图片

 

注册完了之后,登陆网站。点击create,创建一个issue。填写一下Summary, Group Id, Project URL, SCM URL的内容。

project选择Community Support - Open Source Project Repository Hosting (OSSRH)

Issue TypeRequired 是New Project

其他按照按常规填写,写下星号的就可以了。group ID 最好是你个人拥有的域名,审核时候需要询问你是否是域名主人。

然后就创建issue。

新建的issue状态是open的,然后你需要等待工作人员审核,因为有时差,所以可能会隔天。英文水平不好的,可以借助谷歌翻译等软件。

审核通过,你会收到一封邮件。上面是一些仓库的地址。

发布项目至maven中央仓库汇总(流程+问题)_第3张图片

 

2.gpg秘钥安装

2.1 安装gpg

gpg(GunPG)是一款用于生成秘钥的加密软件。

Windows下载地址:

GnuPG - Download​www.gnupg.org

 

Ubuntu可以使用如下命令进行安装:

sudo apt-get install gnupg

mac可以使用brew安装:

brew install gpg

gpg 常用的命令

  • gpg --version 检查安装成功没
  • gpg --gen-key 生成密钥对
  • gpg --list-keys 查看公钥
  • gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys 公钥ID 将公钥发布到 PGP 密钥服务器
  • gpg --keyserver hkp://keyserver.ubuntu.com:11371 --recv-keys 公钥ID 查询公钥是否发布成功

2.2 创建秘钥并发布

运行命令gpg --gen-key 生成密钥对,按照提示输入真实姓名,邮箱等。然后生成秘钥时候,会让你输入两次密码,这个密码要记住。后续会用到。

完成后运行命令gpg --list-keys ,查看本地秘钥

发布项目至maven中央仓库汇总(流程+问题)_第4张图片

gpg --list-keys

然后发布秘钥至秘钥服务器。使用上面最后两个命令发布和验证。

3.maven和pom.xml配置

3.1 pom配置

pom.xml 中必须包括:name、description、url、licenses、developers、scm 等基本信息


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


    
        
            disable-javadoc-doclint
            
                [1.8,)
            
          
            
                -Xdoclint:none
            
        

        
            release
            
                

                    
                        org.sonatype.plugins
                        nexus-staging-maven-plugin
                        1.6.3
                        true
                        
                            ossrh
                            https://oss.sonatype.org/
                            true
                        
                    
                    
                        org.apache.maven.plugins
                        maven-release-plugin
                        2.3.2
                        
                            true
                            false
                            release
                            deploy
                        
                    
                    
                        org.apache.maven.plugins
                        maven-compiler-plugin
                        3.0
                        
                            1.8
                            1.8
                        
                    
                    
                        org.apache.maven.plugins
                        maven-gpg-plugin
                        1.5
                        
                            
                                sign-artifacts
                                verify
                                
                                    sign
                                
                            
                        
                    
                    
                        org.apache.maven.plugins
                        maven-source-plugin
                        2.2.1
                        
                            
                                attach-sources
                                
                                    jar-no-fork
                                
                            
                        
                    
                    
                        org.apache.maven.plugins
                        maven-javadoc-plugin
                        2.10.4
                        
                            
                                attach-javadocs
                                package
                                
                                    jar
                                
                              
                                
                                    ${javadoc.opts}
                                
                            
                        
                    
                
            
        
    
    
        
            The Apache Software License, Version 2.0
            http://www.apache.org/licenses/LICENSE-2.0.txt
            repo
        
    

    
        https://gitee.com/ironzheng/pikachu.git
        https://gitee.com/ironzheng/pikachu.git
        http://pikachu.luway.cn
    

    
        
            yourname
            youremail
            yoururl
        
    

这里给出pom.xml示例,其中开发者信息修改成自己的。

3.2 maven的setting.xml配置

需要添加sonatype的身份认证,就是你一开始申请账号时候的用户名和密码。id要和pom.xml中distributionManagement 中的snapshotRepository和repository保持一致。

      
      id  
      yourname
      yourpass!
      

3.3 发布项目

运行下面命令,进行发布。

mvn clean install deploy -P release -Dgpg.passphrase=生成秘钥时候你的密码

一般如果pom.xml中没有添加自动release的插件的话,你需要登陆

Nexus Repository Manager​oss.sonatype.org

 

手动操作发布。

这是自动发布的插件                 
  
                        org.sonatype.plugins
                        nexus-staging-maven-plugin
                        1.6.3
                        true
                        
                            ossrh
                            https://oss.sonatype.org/
                            true
                        
                    

登陆网站之后,输入你的账号密码,点击左侧的Staging Repositories ->在搜索栏输入你的 groupId -> 勾选你的构件并点击 close -> 点击 tab 栏的 release。

然后就成功发布你的项目了,过个半天一天应该就能找到搜到你的项目了。


问题总结

开发时候总会遇到各种各样的问题,这里持续做些总结。

1.自动发布时候遇到这个问题。

发布项目至maven中央仓库汇总(流程+问题)_第5张图片

这个一般是秘钥不对导致的,处理办法是重新生成秘钥和上传验证。再试一次应该可以解决。

2.发布秘钥时候,no route to host

这个可能是由于网络问题导致无法访问秘钥服务器,办法是或者换个网络,和换个秘钥服务器地址。下面是候选地址

  • pool.sks-keyservers.net
  • ha.pool.sks-keyservers.net
  • p80.pool.sks-keyservers.net:80

3.javadoc问题

由于java8版本可能会导致注解的一些不符合规范,可以添加我示例pom.xml中的注释来解决这个问题。

   
            disable-javadoc-doclint
            
                [1.8,)
            
          
            
                -Xdoclint:none
            
        

4.如果遇到Java home路径问题,可以手动制定java路径来解决。

 
        2.5
        ${java.home}/../bin/javadoc
    

你可能感兴趣的:(项目构建-Maven)