先前都是配置pom.xml從Maven中央倉(cāng)庫(kù)下載依賴(lài)包,幻想著哪一天咱也有個(gè)包可以讓別人自動(dòng)下載啊九默,好高大上的感覺(jué)端姚。
現(xiàn)已成功利用Sonatype OSSRH將fuzhutech-ueditor
提交給Maven的中央倉(cāng)庫(kù)愧薛。特發(fā)表此文以做紀(jì)念。對(duì)于我這樣的新手而言,第一次發(fā)布項(xiàng)目到中央倉(cāng)庫(kù),真不是一件容易的事情俐巴,所以很有必要整理步驟并說(shuō)明一下在發(fā)布過(guò)程中遇到的一些問(wèn)題。
一硬爆、注冊(cè)賬號(hào)
官方網(wǎng)站:http://www.sonatype.org/
注冊(cè)地址:https://issues.sonatype.org/secure/Signup!default.jspa
注冊(cè)后將信息保存到maven的conf/settings.xml中
<servers>
<server>
<id>oss</id>
<username>用戶名</username>
<password>密碼</password>
</server>
</servers>
二欣舵、創(chuàng)建工程單
創(chuàng)建地址:https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134,或者點(diǎn)擊首頁(yè)的中上部“Create”按鈕缀磕。
該步驟字面意思就是Create 一個(gè) issue
缘圈,我們要New 一個(gè) Project
(提出一個(gè)發(fā)布申請(qǐng))劣光。實(shí)質(zhì)就是申請(qǐng)并占有坐標(biāo)Group Id。我的Issue糟把,https://issues.sonatype.org/browse/OSSRH-31467赎线,參考說(shuō)明各項(xiàng)字段內(nèi)容:
Project:Community Support - Open Source Project Repository Hosting (OSSRH)
Issue Type:New Project
Summary:add a new project to the repository
備注:隨意寫(xiě)即可,仔細(xì)觀察發(fā)現(xiàn)大家寫(xiě)的啥都有Description:Various open source project,fuzhutech.com is my own domain.thank you!
備注:可不填糊饱,有的聲明own domain,但系統(tǒng)還是會(huì)讓你確認(rèn)是否擁有颠黎。Group Id:com.fuzhutech
備注:比較關(guān)鍵另锋,系統(tǒng)會(huì)推薦是否選擇com.github.fuzhutechProject URL: https://github.com/fuzhutech/fuzhutech-ueditor
備注:項(xiàng)目的站點(diǎn),據(jù)實(shí)填寫(xiě)即可SCM url:https://github.com/fuzhutech/fuzhutech-ueditor.git
備注:據(jù)實(shí)填寫(xiě)狭归,后續(xù)pom配置中也會(huì)用到
其他的就沒(méi)有什么了夭坪,提交之后就等工作人員離開(kāi)確認(rèn)吧,有時(shí)候工作人員會(huì)問(wèn)你些你沒(méi)有明確的內(nèi)容过椎,只需要回答就好室梅。
大概30分鐘,系統(tǒng)自動(dòng)回復(fù)
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
我提交了疚宇,提交一條Comment
Yes, we own the domain fuzhutech.com.
第二天收到回復(fù)亡鼠,審批初步通過(guò)了。
Configuration has been prepared, ......
三敷待、上傳前的準(zhǔn)備
在等待Issue的過(guò)程中间涵,需要準(zhǔn)備GPG以便對(duì)發(fā)布的文件進(jìn)行簽名。小編直接在http://www.gpg4win.org/download.html 下載Gpg4win-Vanilla
版來(lái)使用榜揖。
1. 查看是否安裝成功
gpg --version
能夠顯示 GPG 的版本信息勾哩,說(shuō)明安裝成功了。
2. 生成密鑰對(duì)
gpg --gen-key
此時(shí)需要輸入realName举哟、Email思劳、Comment等字段,其它字段可使用默認(rèn)值妨猩,此外潜叛,還需要輸入一個(gè) Passphase,相當(dāng)于一個(gè)密鑰庫(kù)的密碼册赛,最好記下來(lái)钠导,因?yàn)楹竺鏁?huì)用到。
3. 查看公鑰
gpg --list-keys
輸出如下信息:
pub 2048R/DEF22C2D 2017-05-23
uid [ultimate] fuzhutech (fuzhutech) <fuzhutech@163.com>
sub 2048R/A8C6E2E2 2017-05-23
這里的公鑰的 ID 是:DEF22C2D森瘪。
4. 將公鑰發(fā)布到 PGP 密鑰服務(wù)器
gpg --keyserver hkp://pool.sks-keyservers.net --send-keys DEF22C2D
此后牡属,可使用本地的私鑰來(lái)對(duì)上傳構(gòu)件進(jìn)行數(shù)字簽名,而下載該構(gòu)件的用戶可通過(guò)上傳的公鑰來(lái)驗(yàn)證簽名扼睬,也就是說(shuō)逮栅,大家可以驗(yàn)證這個(gè)構(gòu)件是否由本人上傳的悴势,因?yàn)橛锌赡茉摌?gòu)件被壞人給篡改了。
5. 查詢(xún)公鑰是否發(fā)布成功
gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys DEF22C2D
從key server
上通過(guò)公鑰 ID 來(lái)接收公鑰措伐,此外特纤,也可以到sks-keyservers.net
上通過(guò)公鑰 ID 去查詢(xún)。后續(xù)OSS進(jìn)行簽名驗(yàn)證成功的前提就是公鑰發(fā)布成功侥加。
6. 在settings.xml中配置gpg的簽名
<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
配置的是生成密鑰對(duì)時(shí)輸入的Passphase
捧存。
四、配置pom.xml
pom.xml
在Maven中央庫(kù)的審核比較嚴(yán)格担败,必須有固定的一些字段昔穴,包括:name、description提前、url吗货、licenses、developers狈网、scm 等基本信息宙搬。
具體這個(gè)文件我就不貼了,請(qǐng)查看我的pom做參考:https://github.com/fuzhutech/fuzhutech-ueditor/blob/master/pom.xml拓哺。
distributionManagement
則是定義了release
和snapshot
發(fā)布的地址勇垛,這個(gè)在Issue通過(guò)審核后工作人員會(huì)給你,還有就是snapshotRepository
與 repository
中的 id 一定要與 setting.xml
中 server
的 id
保持一致拓售。
因?yàn)檫@些執(zhí)行通常都獨(dú)立于標(biāo)準(zhǔn)構(gòu)建流程窥摄,所以把他們移動(dòng)到一個(gè)profile,發(fā)布需要的source插件础淤、javadoc插件崭放、gpg插件都在這個(gè)profile里,這樣只有在發(fā)布的時(shí)候才會(huì)生成源碼包鸽凶、文檔API包和做gpg簽名币砂。
五、上傳到OSS
待項(xiàng)目編寫(xiě)完成玻侥,就可以進(jìn)行上傳决摧、發(fā)布了。在命令行進(jìn)入項(xiàng)目pom.xml
所在路徑凑兰,執(zhí)行命令提交到OSS服務(wù)器掌桩。
1.提交一個(gè)snapshot版本,修改version加一個(gè)-SNAPSHOT:
mvn clean deploy
2.發(fā)布一個(gè)release版本姑食,修改version 不要加-SNAPSHOT
mvn clean deploy -P release
可以手動(dòng)修改波岛,也可以執(zhí)行
mvn versions:set -DnewVersion=1.0.0
注意:此時(shí)上傳的構(gòu)件并未正式發(fā)布到中央倉(cāng)庫(kù)中,只是部署到 OSS 中了音半,下面才是真正的發(fā)布则拷。
六贡蓖、在OSS中發(fā)布
上傳成功后需要在OSS系統(tǒng)中對(duì)操作進(jìn)行確認(rèn),登錄https://oss.sonatype.org/煌茬,在左邊菜單找到“Staging Repositories”
斥铺,點(diǎn)擊,在右邊上面一點(diǎn)有一個(gè)輸入搜索框輸入你的groupid
進(jìn)行快速定位坛善,可以發(fā)現(xiàn)這時(shí)你的構(gòu)件狀態(tài)是“open”
晾蜘,勾選你的構(gòu)件,查看校驗(yàn)的結(jié)果信息眠屎,如果沒(méi)有錯(cuò)誤就可以點(diǎn)擊剛才勾選的checkbox上面右邊一點(diǎn)的“close”
按鈕笙纤,在彈出框中“confirm”
。
接下來(lái)系統(tǒng)會(huì)自動(dòng)驗(yàn)證有效性组力,如果你的Group Id
和pom.xml
沒(méi)有錯(cuò)誤,狀態(tài)會(huì)自動(dòng)變成closed
抖拴,如果有問(wèn)題燎字,會(huì)在下面提示你那里有問(wèn)題,加入有問(wèn)題你可以點(diǎn)擊drop
按鈕刪掉這個(gè)構(gòu)件阿宅,修改后重新執(zhí)行步驟五候衍。
成功后狀態(tài)會(huì)變?yōu)椤癱losed”,點(diǎn)擊release按鈕發(fā)布洒放。
七蛉鹿、通知sonatype首次發(fā)布
回到issue系統(tǒng),找到你的那個(gè)申請(qǐng)的issue往湿,寫(xiě)個(gè)comment妖异,I promoted my first release, thanks
,說(shuō)明首次發(fā)布完成了领追,等待他們審核他膳。
審核通過(guò)后我們就可以在中央庫(kù)搜索到我們的GroupId!搜索的地址是: http://search.maven.org/
八绒窑、感謝
成功的發(fā)布離不開(kāi)各個(gè)前臺(tái)帖子的指導(dǎo)棕孙,雖然我沒(méi)有按照帖子一步成功,但我希望可以幫助一些人少走一些彎路些膨,小白不易蟀俊,且行且珍惜。