提交代码到Maven中央仓库遇到的那些坑 及相应申请步骤

 

提交代码到Maven中央仓库遇到的那些坑 及相应申请步骤

 

在网上搜索了许多资料,还是遇到莫名其妙的问题,最后到英文网站去搜索了,才算勉强解决。

主要有三个问题。

  1.  

用Eclipse提交就行,用mvn命令行报gpg错误。最后确定是gpg的问题,因为用eclipse的时候,有跳出一密码框,提示要输入密码,输入后就能打gpg相关的包了。

 

另外: 要是创建pgp密钥后,没有将公钥上传到公共服务器,或刚上传,maven那边还没能查到你的公钥,在上传完文件到maven后,也会报验证没通过,导致提交失败. 一般公钥上传后,要一两个小时才查到.

 

2

还有一个地方是,前一天用Eclipse明明是提交成功了,

到 https://oss.sonatype.org/#stagingRepositorieshttp://search.maven.org/搜索都没有。晚上10点多,又有一次提交成功,去查,还是没有。第二天五点又提交了一次,也有上传成功的信息。 上去查居然能查到了,连昨天的也能查到了。不知道是时差问题,还是服务器不稳定,反正就是多折腾了一天。

上传成功的提示信息:

3.有可能是国内网络问题

from/to central (https://repo .maven.apache.org/maven2): Received fatal alert: protocol_version

网络问题,可以设置阿里代理:

    <mirror> 

            <id>aliyun</id> 

            <name>aliyun Maven</name> 

            <mirrorOf>*</mirrorOf> 

            <url>http://maven.aliyun.com/nexus/content/groups/public/</url> 

        </mirror> 

更为气愤的是:有时候就因为这个原因,界面就一直停在那了,还没有提示信息,后来把代理配置放开了,又可以了。

 

另外还有一个也要注意:

用插件:

   <plugin>

                   <groupId>org.sonatype.plugins</groupId>

                   <artifactId>nexus-staging-maven-plugin</artifactId>

                   <version>1.6.7</version>

                   <extensions>true</extensions>

                   <configuration>

                      <serverId>ossrh</serverId>

                      <nexusUrl>https://oss.sonatype.org/</nexusUrl>

                      <autoReleaseAfterClose>true</autoReleaseAfterClose>

                   </configuration>

                </plugin>

不用去评论,就可以直接查看发布的代码(要是有提交成功提示信息,还是没查到,建议迟些再查)。

提交成功提示:

 

需要注意的是,提交的是本地代码,而不是github上的代码。

 

以下为主要步骤:

  1. 创建一个git开源仓库

最详细的教程,还是官网的. (没有测试这一步,上传代码到中央仓库是否是必需的)

https://git-scm.com/book/zh/v2/GitHub-账户的创建和配置

另外可以参考另一篇文章(用eclipse提交代码到github)https://blog.csdn.net/abckingaa/article/details/88380525

2. 注册Sonatype账号(至于为什么要注册,请参考以下信息)。

2.1:注册一个JIRA账号:https://issues.sonatype.org/secure/Signup!default.jspa

2.2:创建一个新工程的单:https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134

只有当这个jira单的状态为resolved时,才可以提交代码到Maven中央库。

MavenSonatype的关系:

背后的公司 —— Maven的托管在Apache的,但中央仓库不是Apache的资源,中央仓库是由Sonatype出资维护的。

提交内容 —— 只要你的项目是开源的,而且你能提供完备的POM等信息,你就可以提交项目文件至中央仓库,这可以通过Sonatype提供的开源Maven仓库托管服务实现。

Maven用户 ——Maven之外,其它工具如IvyGradle也使用Maven中央仓库。

3. PGP安装及生成密钥

gpg4winhttps://files.gpg4win.org/gpg4win-3.1.3.exe

安装后用图形界面生成密钥即可。

 

 

生成后,可以dos窗口,用命令:gpg --list-keys 可以查出相关信息.

C:\Users\xx>gpg --list-keys

 

参考: https://central.sonatype.org/pages/working-with-pgp-signatures.html

将密钥上传到服务器:

gpg --keyserver hkp://pool.sks-keyservers.net --send-keys C6EED57A

 

别人可以下载你的公钥:

gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys C6EED57A

 

可以换台电脑(其它电脑也要安装gpg4win)用图形界面查,可以查到,就表示已上传到服务器了(有时要等一两个小时).

 

 

4. 提交代码到Maven中央库

4.1  pom.xml 配置信息

完整配置信息,参考以下源码目录的pom.xml文件

https://github.com/automvc/hellobee

profile配置方式,使用命令时带-P release。

4.2 {maven安装目录}\conf\ settings.xml

  在<servers> </servers>标签之间,添加Sonatype账号信息

    <server>

      <id>ossrh</id>  这个id要与pom里配置的一样。

      <username>automvc</username>

      <password>密码</password>

</server>

 

添加gpg <profile>如下:  也不知这个有什么用,反正提交的时候是要手动输入密码。

    <profile>

  <id>ossrh</id>

      <activation>

        <activeByDefault>true</activeByDefault>

      </activation>

      <properties>

        <gpg.executable>gpg</gpg.executable>

        <gpg.passphrase>the_pass_phrase</gpg.passphrase>

      </properties>

    </profile>

gpg.executable有些系统是用gpg2, 有些是用pgp.参考:

https://central.sonatype.org/pages/working-with-pgp-signatures.html

4.3 用mvn命令: mvn clean deploy -P release

或在eclipse用命令clean deploy -P release

profile配置方式,使用命令时带-P release

看到有Uploading,Uploaded相关信息表示正在上传。

上传成功后的界面如下所示:

 

上传成功后,maven不建议删除或更新该版本的文件。所以上传正式版本的,上传前要格外小心。不然更新后就要换一个版本再提交。  要是有知道如何更新或删除已提交到maven中央仓库代码的大神,欢迎留言说声,不胜感激!


版权声明:本文为abckingaa原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。