背景
百度有一个开源的工程uid-generator
,非常好的一个项目,江湖上到处流传着它的传说,江湖人称“百度雪花算法”,但是可惜的是,它没有发布到中央仓库。在没有发布到中央仓库的前提下想要使用这个工程的生成方案的话,要么拷贝到项目中,要么自行打包到私服或者本地再进行引入,对于个人开发者来说,这个还是有一点点小小的苦恼。无法直接引入使用,给我的感受是享受不到maven给我带来的快感!另外我是想基于该工程,打造一个sequence-spring-boot-starter.所以才有了今天这番折腾
发布指南
看勇哥这份smart发布手册吧,时隔多年再回头看勇哥的文章依然能感受到他当时意气风发,满屏的骚气扑面而来,但是不得不说,勇哥的文章简直是所有技术类文章中的一股清流之一
撸起袖子准备干
略微看了下百度的工程结构,相对比较简单,简单看了下依赖,第一感受是依赖的spring相关jar包,这种情况下如果我在不同的spring boot/cloud工程里面引入这个工程的话是不是在项目中就可能出现不同版本的spring包。所以,我第一时间先fork了一下工程,方便根据不同的spring版本,发布不同的uid-generator包
然后我当然就开始clone了fork后的工程,按照勇哥骚气的指引,很快我就去sonatype issue创建了账号设置了密码,当然....我是不会把我的账号告诉你们的!
再然后的话我就在sonatype上提交了一个issue,当然了第一次我提交了一个maven central的issue....想来想去不对啊,没有别人都提到的Group Id
,Project URL
,SCM url
相关设置,心想应该是选错了吧,为了避免给工作人员添加麻烦,我就假模假样的在comment上用着四级都靠蒙的英文写上了"i have already create another issue"请求关闭之类的话(第一次提交的issue )
接着我当然真的去创建了另外一个issue,项目名称是:Community Support-Open Source Project Repository Hosting
问题类型是New Project
依照指示,按道理1-2天就可以审批通过了,但是过了几分钟我发现我提交的issue状态已经发生了变化,我根本没多想,以为可以发布到中央仓库了,然后我就开始倒腾,弄好了gpg, setting.xml里面也配置好了账号密码,并且对uid-generator项目的pom文件进行的修改,添加了licenses,url,scm,profiles
当然也不能委屈了uid-generator的contributor,所以我还添加了developers
<developers>
<developer>
<name>optor666</name>
</developer>
<developer>
<name>baozhi</name>
<email>yutianbao@baidu.com</email>
</developer>
</developers>
fork项目地址里面都有啦。
按照指引,我在项目目录下执行mvn clean deploy -P release
,嗯....果然没那么顺利,一堆报错,仔细一看都是uid-generator中注释要么没写,要么写的有问题,好吧...大厂不过如此!为了屏蔽这个错误,我就在pom文件的profile结构下增加了如下内容
<properties>
<additionalparam>-Xdoclint:none</additionalparam>
</properties>
当然为了不跑单元测试,我也执行了这个命令mvn clean deploy -P release -Dmaven.test.ship=true
看到标题当然知道结果还是失败啦,报错如下
uid-generator: Failed to deploy artifacts: Could not transfer artifact com.baidu.fsg:uid-generator:jar:1.0.0-RELEASE from/to oss......with status code 401
思考了一分“401是权限问题么?我已经配置了账号密码啦,为啥还是错”...
回头再看issue,状态是Waiting for Response
这是在等我回复啊。好吧,看下老外说了些啥
A staging repository is already configured for the groupId com.baidu. Can you have someone with a deployer role comment on this ticket to verify your request?
好吧....分析了这段话5分钟,明白了他啥意思了....没戏了.以后再玩吧!
接下来干点啥
- 在百度uid-generator项目下提交了一个issue,请他们造福人类,上传一下jar到中央仓库,不晓得他们会不会干
- 利用阿里规约扫了一下工程,具体的大家自己看吧!
- 写下了这篇流水账
- 准备sequence-spring-boot-starter工程包含多种uid生产方案(会开源)