提交代码到Maven中央仓库遇到的那些坑 及相应申请步骤
提交代码到Maven中央仓库遇到的那些坑 及相应申请步骤
在网上搜索了许多资料,还是遇到莫名其妙的问题,最后到英文网站去搜索了,才算勉强解决。
主要有三个问题。
用Eclipse提交就行,用mvn命令行报gpg错误。最后确定是gpg的问题,因为用eclipse的时候,有跳出一密码框,提示要输入密码,输入后就能打gpg相关的包了。
另外: 要是创建pgp**后,没有将公钥上传到公共服务器,或刚上传,maven那边还没能查到你的公钥,在上传完文件到maven后,也会报验证没通过,导致提交失败. 一般公钥上传后,要一两个小时才查到.
2.
还有一个地方是,前一天用Eclipse明明是提交成功了,
到 https://oss.sonatype.org/#stagingRepositories和http://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上的代码。
以下为主要步骤:
- 创建一个git开源仓库
最详细的教程,还是官网的. (没有测试这一步,上传代码到中央仓库是否是必需的)
https://git-scm.com/book/zh/v2/GitHub-账户的创建和配置
另外可以参考另一篇文章(用eclipse提交代码到github): https://blog.****.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中央库。
Maven与Sonatype的关系:
背后的公司 —— Maven的托管在Apache的,但中央仓库不是Apache的资源,中央仓库是由Sonatype出资维护的。
提交内容 —— 只要你的项目是开源的,而且你能提供完备的POM等信息,你就可以提交项目文件至中央仓库,这可以通过Sonatype提供的开源Maven仓库托管服务实现。
非Maven用户 —— 除Maven之外,其它工具如Ivy和Gradle也使用Maven中央仓库。
3. PGP安装及生成**
下载gpg4win:https://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中央仓库代码的大神,欢迎留言说声,不胜感激!