先前都是配置pom.xml从Maven中央仓库下载依赖包,幻想着哪一天咱也有个包可让别人自动下载啊,好高大上的感受。html
现已成功利用Sonatype OSSRH将fuzhutech-ueditor
提交给Maven的中央仓库。特发表此文以作记念。对于我这样的新手而言,第一次发布项目到中央仓库,真不是一件容易的事情,因此颇有必要整理步骤并说明一下在发布过程当中遇到的一些问题。java
官方网站:http://www.sonatype.org/git
注册地址:https://issues.sonatype.org/secure/Signup!default.jspagithub
注册后将信息保存到maven的conf/settings.xml中服务器
<servers> <server> <id>oss</id> <username>用户名</username> <password>密码</password> </server> </servers>
建立地址:https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134,或者点击首页的中上部“Create”按钮。dom
该步骤字面意思就是Create 一个 issue
,咱们要New 一个 Project
(提出一个发布申请)。实质就是申请并占有坐标Group Id。个人Issue,https://issues.sonatype.org/browse/OSSRH-31467,参考说明各项字段内容:jsp
其余的就没有什么了,提交以后就等工做人员离开确认吧,有时候工做人员会问你些你没有明确的内容,只须要回答就好。maven
大概30分钟,系统自动回复网站
Do you own the domain fuzhutech.com? If not, please read:
http://central.sonatype.org/pages/choosing-your-coordinates.html You
may also choose a groupId that reflects your project hosting, in this
case, something like io.github.fuzhutech or com.github.fuzhutech
我提交了,提交一条Commentui
Yes, we own the domain fuzhutech.com.
次日收到回复,审批初步经过了。
Configuration has been prepared, ......
在等待Issue的过程当中,须要准备GPG以便对发布的文件进行签名。小编直接在http://www.gpg4win.org/downlo... 下载Gpg4win-Vanilla
版来使用。
gpg --version
可以显示 GPG 的版本信息,说明安装成功了。
gpg --gen-key
此时须要输入realName、Email、Comment等字段,其它字段可以使用默认值,此外,还须要输入一个 Passphase,至关于一个密钥库的密码,最好记下来,由于后面会用到。
gpg --list-keys
输出以下信息:
pub 2048R/DEF22C2D 2017-05-23 uid [ultimate] fuzhutech (fuzhutech) <fuzhutech@163.com> sub 2048R/A8C6E2E2 2017-05-23
这里的公钥的 ID 是:DEF22C2D。
gpg --keyserver hkp://pool.sks-keyservers.net --send-keys DEF22C2D
此后,可以使用本地的私钥来对上传构件进行数字签名,而下载该构件的用户可经过上传的公钥来验证签名,也就是说,你们能够验证这个构件是否由本人上传的,由于有可能该构件被坏人给篡改了。
gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys DEF22C2D
从key server
上经过公钥 ID 来接收公钥,此外,也能够到sks-keyservers.net
上经过公钥 ID 去查询。后续OSS进行签名验证成功的前提就是公钥发布成功。
<profiles> <profile> <id>ossrh</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <!--gpg.keyname>DEF22C2D</gpg.keyname--> <gpg.executable>gpg2</gpg.executable> <gpg.passphrase>the_pass_phrase</gpg.passphrase> </properties> </profile> </profiles> <activeProfiles> <activeProfile>ossrh</activeProfile> </activeProfiles>
the_pass_phrase
配置的是生成密钥对时输入的Passphase
。
pom.xml
在Maven中央库的审核比较严格,必须有固定的一些字段,包括:name、description、url、licenses、developers、scm 等基本信息。
具体这个文件我就不贴了,请查看个人pom作参考:https://github.com/fuzhutech/...。
distributionManagement
则是定义了release
和snapshot
发布的地址,这个在Issue经过审核后工做人员会给你,还有就是snapshotRepository
与 repository
中的 id 必定要与 setting.xml
中 server
的 id
保持一致。
由于这些执行一般都独立于标准构建流程,因此把他们移动到一个profile,发布须要的source插件、javadoc插件、gpg插件都在这个profile里,这样只有在发布的时候才会生成源码包、文档API包和作gpg签名。
待项目编写完成,就能够进行上传、发布了。在命令行进入项目pom.xml
所在路径,执行命令提交到OSS服务器。
mvn clean deploy
mvn clean deploy -P release
能够手动修改,也能够执行mvn versions:set -DnewVersion=1.0.0
注意:此时上传的构件并未正式发布到中央仓库中,只是部署到 OSS 中了,下面才是真正的发布。
上传成功后须要在OSS系统中对操做进行确认,登陆https://oss.sonatype.org/,在左边菜单找到“Staging Repositories”
,点击,在右边上面一点有一个输入搜索框输入你的groupid
进行快速定位,能够发现这时你的构件状态是“open”
,勾选你的构件,查看校验的结果信息,若是没有错误就能够点击刚才勾选的checkbox上面右边一点的“close”
按钮,在弹出框中“confirm”
。
接下来系统会自动验证有效性,若是你的Group Id
和pom.xml
没有错误,状态会自动变成closed
,若是有问题,会在下面提示你那里有问题,加入有问题你能够点击drop
按钮删掉这个构件,修改后从新执行步骤五。
成功后状态会变为“closed”,点击release按钮发布。
回到issue系统,找到你的那个申请的issue,写个comment,I promoted my first release, thanks
,说明首次发布完成了,等待他们审核。
审核经过后咱们就能够在中央库搜索到咱们的GroupId!搜索的地址是: http://search.maven.org/
成功的发布离不开各个前台帖子的指导,虽然我没有按照帖子一步成功,但我但愿能够帮助一些人少走一些弯路,小白不易,且行且珍惜。