总体来说我也是结合本站各位同学写的操作步骤执行,但是过程中遇到了很多问题。现回顾整理记录下整过过程。以备后续同学借鉴。
目标:把自己开发的工具jar包上传至maven官方中心库,以供其他人dependency
引用。
一、准备
开始要注意这个几个Maven相关地址:
① https://issues.sonatype.org 工单管理地址,就是申请上传资格和groupId
的地方。
② https://oss.sonatype.org/#welcome 构件仓库,把jar包上传到这里,Release
之后就会同步到maven中央仓库。
③ http://search.maven.org/ 最终表现在可以在这里搜索到。
部分网址第一次打开有点慢,请稍等。
二、创建工单
从https://issues.sonatype.org 注册一个帐号(已经有请忽略),账号密码要记住,下面登录账号密码还要用这个。
可参考地址:https://www.sojson.com/blog/250.html
注意:如果您在创建时发现弹出框中,没有关于group Id 、project url等填写地方,那么说明首次进入方式可能不对,这块我也吃亏了(英文不好的同学推荐谷歌浏览器翻译),
可通过此地址进入:https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134#
还不行参考官网介绍:https://central.sonatype.org/pages/ossrh-guide.html
等到审核通过状态会变为RESOLVED
,第一次审核要一天左右 。
注意:其实整个过程都可以和issues的互动交流,不会的百度翻译后再发。
例如我用的自己域名证书证明域名 www.iussoft.com 是我的,沟通截图如下:
图上最后这段英文大概意思是:
三、GPG环境的安装
安装过程,我就不细说了,网上很多大拿都写过。可参考这些地址:
https://www.sojson.com/blog/250.html
https://blog.csdn.net/hupoling/article/details/78511899
https://blog.csdn.net/cc_want/article/details/77943340
我自己本次cmd内创建gpg大概最终输出:
gpg: key 546767CAA6532AB0 marked as ultimately trusted
public and secret key created and signed.
pub rsa2048 2018-08-28 [SC] [expires: 2020-08-27]
A48B4D0CA1D660DA5966C119546767CAA6532AB0
uid hexin
sub rsa2048 2018-08-28 [E] [expires: 2020-08-27]
其中 546767CAA6532AB0 就是申请的key
1)查看我的key
gpg --list-keys
最后注意 keyserver 上传到服务端:
2)上传命令例如:[末尾参数替换自己key分别执行下面命令]
gpg --keyserver hkp://pool.sks-keyservers.net --send-keys 546767CAA6532AB0
gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys 546767CAA6532AB0
3)查看是否上传成功命令:[l末尾参数替换自己key分别执行下面命令]
gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 546767CAA6532AB0
gpg --keyserver hkp://keyserver.ubuntu.com:11371 --recv-keys 546767CAA6532AB0
四、配置Maven Settings.xml & pom.xml
我这块也是耗时最多的(主要也是第一次整),中间也和issues互动交流过遇到的问题。主要参考下面的地址;
https://central.sonatype.org/pages/requirements.html
我的最终Settings.xml配置:
...
sonatype-nexus-snapshots
https://issues.sonatype.org官网注册用户名称
https://issues.sonatype.org官网注册用户密码
sonatype-nexus-staging
https://issues.sonatype.org官网注册用户名称
https://issues.sonatype.org官网注册用户密码
...
其实可以配置一组被共用就行,我为了区分就分开配置了,两组账户和密码信息一样即可。
我的最终项目的pom.xml配置:
最好使用maven快照版本,至于和发布版本的区别参考介绍地址:https://www.cnblogs.com/wuchanming/p/5484091.html
4.0.0
com.iussoft
iussoft-api
3.0.0-SNAPSHOT
jar
${project.groupId}:${project.artifactId}
Iussoft Open API for Java
Copyright (C) http://www.iussoft.com
All rights reserved.
http://www.iussoft.com
UTF-8
UTF-8
4.3.7.RELEASE
1.7
${java.version}
${java.version}
The Apache Software License, Version 2.0
http://www.apache.org/licenses/LICENSE-2.0.txt
iussoft
hexin********@163.com
scm:git:[email protected]:iu******orm.git
scm:git:[email protected]:iu******orm.git
https://gitee.com/ius******orm
1.0
sonatype-nexus-snapshots
oss Snapshots Repository
https://oss.sonatype.org/content/repositories/snapshots
sonatype-nexus-staging
oss Staging Repository
https://oss.sonatype.org/service/local/staging/deploy/maven2/
......
org.apache.maven.plugins
maven-compiler-plugin
1.7
org.apache.maven.plugins
maven-jar-plugin
false
org.apache.maven.plugins
maven-source-plugin
2.2.1
attach-sources
jar-no-fork
org.apache.maven.plugins
maven-javadoc-plugin
2.10.3
attach-javadocs
jar
org.sonatype.plugins
nexus-staging-maven-plugin
1.6.7
true
sonatype-nexus-staging
https://oss.sonatype.org/
true
org.apache.maven.plugins
maven-gpg-plugin
1.6
sign-artifacts
verify
sign
几点注意事项:
1、developers和scm信息:最好用你代码所在git的账户信息和git地址信息。
2、distributionManagement中的信息:id保持一样,注意别多空格。
3、plugins内插件配置,source、javadoc、sonatype、gpg等,注意先maven下载相关引用jar。
4、
五、部署、上传
1)CMD命令窗口:部署命令执行可以使用:
mvn deploy -Dmaven.test.skip=true -e
2)idea工具配置及执行
配置完成后,先clean再deploy,同时会分别打包jar,pom,javadoc,sources等信息,若有问题会失败,请先解决错误。
然后上传时输入之前创建gpg时设置的密码。
如上图,第一个success表示部署成功(上传成功)此时可以在https://oss.sonatype.org/ 登录查看信息,登录信息和 issues注册的一样。
最终可以按照自定义的group Id搜索最新提交的版本信息。如下图我的3.0.2;
等待发布成功,其实在https://oss.sonatype.org/content/groups/public/ 这个里面就能找到。
而想在central中看到,一般第一次和issues提交工单沟通后,就是我发布完了。有时候自动就回复了。大概回复如下。
大概意思2个小时左右就可以看到了。
六、项目中应用
一般我们在项目开发阶段为了方便团队合作,推荐使用快照版。而正式上线或者版本稳定的推荐使用发布版,具体介绍参考:
https://www.cnblogs.com/wuchanming/p/5484091.html
项目pom.xml配置
1)首先需要启用快照库
方式一:修改每个项目pom.xml
nexus
Nexus Mirror
https://oss.sonatype.org/content/groups/public/
true
always
方式二:修改统一配置文件settings.xml
参考地址:https://blog.csdn.net/shenzhen_zsw/article/details/78409917
2)引用配置
com.iussoft
iussoft-api
2.0.3-SNAPSHOT
七、总结
1)一般遇到问题,可以在网上搜索资料,排查。本人推荐最后是直接和https://issues.sonatype.org/官网的工单上和工作人员进行互动(可能花费时间长点,但是能给你相关正确的参考地址)。
2)group id命名 和OSSRH相关操作,最好参考https://central.sonatype.org/pages/ossrh-guide.html
3)登录账号密码最好别有@符号。
4)deploy时报403错误是,及时反馈issues官网工单,让其改权限(我在这块一直以为是自己本地配置问题)。
5)deploy时报错,* Missing Signature: '*****.jar.asc' does not exist for '***.jar'.等错误时,其实是无法用gpg进行jar文件签名生成对应的asc文件。这种情况可以排查本地gpg环境是否安装,配置正确;同时排查下生成的key是否已经上传到keyserver服务端。
6)整过过程连接国外网站,网络断断续续,或者比较缓慢,需要耐心等待。
7)开发过程中因为版本不稳定,推荐使用快照库,等部署或者稳定后使用发布版。