將項(xiàng)目發(fā)布到Maven中央倉(cāng)庫(kù)

先前都是配置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.fuzhutech

  • Project 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則是定義了releasesnapshot發(fā)布的地址勇垛,這個(gè)在Issue通過(guò)審核后工作人員會(huì)給你,還有就是snapshotRepositoryrepository 中的 id 一定要與 setting.xmlserverid 保持一致拓售。

因?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 Idpom.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)有按照帖子一步成功,但我希望可以幫助一些人少走一些彎路些膨,小白不易蟀俊,且行且珍惜。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末订雾,一起剝皮案震驚了整個(gè)濱河市肢预,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌葬燎,老刑警劉巖误甚,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缚甩,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡窑邦,警方通過(guò)查閱死者的電腦和手機(jī)擅威,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)冈钦,“玉大人郊丛,你說(shuō)我怎么就攤上這事∏粕福” “怎么了厉熟?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)较幌。 經(jīng)常有香客問(wèn)我揍瑟,道長(zhǎng),這世上最難降的妖魔是什么乍炉? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任绢片,我火速辦了婚禮,結(jié)果婚禮上岛琼,老公的妹妹穿的比我還像新娘底循。我一直安慰自己,他們只是感情好槐瑞,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布熙涤。 她就那樣靜靜地躺著,像睡著了一般困檩。 火紅的嫁衣襯著肌膚如雪祠挫。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,255評(píng)論 1 308
  • 那天悼沿,我揣著相機(jī)與錄音茸歧,去河邊找鬼。 笑死显沈,一個(gè)胖子當(dāng)著我的面吹牛软瞎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播拉讯,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼涤浇,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了魔慷?” 一聲冷哼從身側(cè)響起只锭,我...
    開(kāi)封第一講書(shū)人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎院尔,沒(méi)想到半個(gè)月后蜻展,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體喉誊,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年纵顾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了伍茄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡施逾,死狀恐怖敷矫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情汉额,我是刑警寧澤曹仗,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站蠕搜,受9級(jí)特大地震影響怎茫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜妓灌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一遭居、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧旬渠,春花似錦、人聲如沸端壳。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)损谦。三九已至岖免,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間照捡,已是汗流浹背颅湘。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留栗精,地道東北人闯参。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像悲立,于是被迫代替她去往敵國(guó)和親鹿寨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容