国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

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

開(kāi)發(fā) 項(xiàng)目管理 前端
前幾天參考@黃勇 大神的博客 http://my.oschina.net/huangyong/blog/226738 成功將我的Hutool項(xiàng)目發(fā)布到了Maven的中央庫(kù),發(fā)表這篇博客以做紀(jì)念,順便重新整理步驟并說(shuō)明一下在發(fā)布過(guò)程中遇到的一些原博客中沒(méi)有說(shuō)明的問(wèn)題。

前幾天參考@黃勇 大神的博客 http://my.oschina.net/huangyong/blog/226738 成功將我的Hutool項(xiàng)目發(fā)布到了Maven的中央庫(kù),發(fā)表這篇博客以做紀(jì)念,順便重新整理步驟并說(shuō)明一下在發(fā)布過(guò)程中遇到的一些原博客中沒(méi)有說(shuō)明的問(wèn)題。

其實(shí)總結(jié)下來(lái)發(fā)布的過(guò)程是與Sonatype工作人員交互的過(guò)程,這個(gè)過(guò)程是在Sonatype的JIRA平臺(tái)上完成的,過(guò)程如下:

  1. 注冊(cè)
  2. 提交一個(gè)issue(提出一個(gè)發(fā)布申請(qǐng)),告訴工作人員我要?jiǎng)?chuàng)建一個(gè)構(gòu)件。
  3. 等待工作人員審批,會(huì)給你發(fā)郵件,在這個(gè)issue下給你comment說(shuō)明通過(guò)或者哪里有問(wèn)題。
  4. 上傳構(gòu)件
  5. 發(fā)布構(gòu)建,并在哪個(gè)issue下告訴工作人員我發(fā)布了
  6. 等待審核,如果通過(guò)會(huì)告訴你需要release一下并在issue上告訴工作人員我release了
  7. 發(fā)布成功

這個(gè)過(guò)程比較漫長(zhǎng),慢在審核的過(guò)程,所以這個(gè)過(guò)程***在晚上進(jìn)行(我23點(diǎn)進(jìn)行的,過(guò)了幾分鐘就回復(fù)我了),等待也是焦急而激動(dòng)的,總體說(shuō)來(lái)整個(gè)過(guò)程還是很有成就感滴~


1. 注冊(cè)帳戶

注冊(cè)地址是 https://issues.sonatype.org/secure/Signup!default.jspa
sonatype注冊(cè)頁(yè)面

字段我就不細(xì)說(shuō)了,一看就懂,不過(guò)Email非常重要,之后和工作人員的交流全靠這個(gè)郵件了。

2. 創(chuàng)建一個(gè) Issue

地址是 https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134
創(chuàng)建Issue

這里需要特別說(shuō)明的是Group Id,如果你是托管在Github或者Git@OSC 可以使用com.github.XXX或者net.oschina.XXX,我之前注冊(cè)了個(gè)自己的域名com.xiaoleilu,所以在此填寫這個(gè)group,剩下的可以依照實(shí)際情況填寫,例如托管的地址等等。

3. 等待Issue審批

審批過(guò)程中出現(xiàn)過(guò)一些問(wèn)題,***次提交是因?yàn)槲业腉roup Id 不符合規(guī)范(我用的looly.github),工作人員給我修正為com.github.looly了,然后告訴我可以進(jìn)行下一步了,當(dāng)時(shí)沒(méi)理解,以為沒(méi)通過(guò),結(jié)果我又重新提交了一個(gè)Issue(就是com.xiaoleilu的Group Id),然后工作人員確認(rèn)這個(gè)域名是否是我自己的,我回復(fù)是(在JIRA這個(gè)Issue下加個(gè)Comment),接著就通過(guò)了。
通過(guò)審核

截圖為這個(gè)Issue的截圖,當(dāng)看到 Configuration has been prepared, now you can: 這句話的時(shí)候,說(shuō)明你已經(jīng)通過(guò)了Issue的審批,可以上傳構(gòu)建了。

4. 使用 GPG 生成密鑰對(duì)

這個(gè)步驟是不是很突然?GPG是干嘛的?我開(kāi)始也很迷茫,后來(lái)看官方文檔說(shuō)是簽名構(gòu)建用的,貌似為了保證你的構(gòu)件不被第三方篡改,用于驗(yàn)證,神馬原理呢?就是用這個(gè)東西在本地生成一個(gè)公鑰和一個(gè)私鑰,把公鑰上傳上去,當(dāng)發(fā)布的時(shí)候用私鑰簽名一下(這個(gè)由maven-gpg-plugin搞定,不用我們自己來(lái))。其實(shí)這個(gè)步驟也折騰了我好久,按照原博客的步驟,下載Gpg4win-Vanilla,我下載的2.1版本,系統(tǒng)是Windows8.1,并不能正常使用(在輸入密碼那段老是過(guò)不去),于是我轉(zhuǎn)向Cygwin,步驟如下:

  1. 安裝
    我使用apt-cyg安裝的,具體不介紹了,如果不會(huì)就參考Windows下安裝Cygwin及包管理器apt-cyg,然后運(yùn)行

    1. apt-cyg install gnupg 

如果你是Linux,也可以用包管理工具安裝gnupg這個(gè)包。

  1. 生成公鑰私鑰

    1. gpg --gen-key 

一路回車,然后輸入用戶名、郵箱等,***重復(fù)兩次輸入Passphase(這個(gè)在發(fā)布的時(shí)候需要,在此牢記),如果你還是不清楚,看下這篇博客GPG入門教程

  1. 查看公鑰私鑰

    1. gpg --list-keys  
    2. /home/loolly/.gnupg/pubring.gpg  
    3. -------------------------------  
    4. pub   2048R/C990D076 2014-05-28 
    5. uid                  Looly <loolly@gmail.com>  
    6. sub   2048R/48F6CC72 2014-05-28 

其中 C990D076 是需要傳到服務(wù)器的

  1. 發(fā)布公鑰

    1. gpg --keyserver hkp://pool.sks-keyservers.net --send-keys C990D076 

執(zhí)行這一步在Cygwin下可能會(huì)報(bào)錯(cuò)

  1. gpg: 警告:配置文件‘/home/loolly/.gnupg/gpg.conf’權(quán)限不安全   
  2. gpg: 警告:配置文件‘/home/loolly/.gnupg/gpg.conf’的關(guān)閉目錄權(quán)限不安全  

原因是.gnupg的權(quán)限太大,這個(gè)目錄必須只有當(dāng)前用戶本人有寫權(quán)限,所以執(zhí)行

  1. chmod 700 .gnupg 

我開(kāi)始的時(shí)候修改權(quán)限失敗了,原因是這個(gè)目錄的組是None,所以執(zhí)行

  1. hown loolly:Users .gnupg 

給定了一個(gè)組名,這樣chmod命令就可以正常執(zhí)行了。

  1. 查看是否成功

    1. gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys C990D076 

好的,我們的密鑰對(duì)已經(jīng)準(zhǔn)備好了,至于如何使用,請(qǐng)看接下來(lái)的步驟。

5. 修改setting.xml

setting.xml這個(gè)文件存在于兩個(gè)地方,一個(gè)是用戶的Maven配置文件,在${user}/.m2/setting.xml${user}表示你的用戶目錄,這個(gè)文件只對(duì)當(dāng)前用戶有效,另一個(gè)在你Maven安裝目錄的conf/setting.xml文件,這個(gè)是全局的配置文件,考慮到我的電腦只有自己用,所以只用全局配置文件添加內(nèi)容如下:

  1. <settings> 
  2.     ...  
  3.     <servers> 
  4.         <server> 
  5.             <id>oss</id> 
  6.             <username>用戶名</username> 
  7.             <password>密碼</password> 
  8.         </server> 
  9.     </servers> 
  10.     ...  
  11. </settings> 

這里的用戶名密碼就是我們?cè)?**部注冊(cè)的時(shí)候的用戶名和密碼。

6. 修改pom.xml文件

pom.xml在Maven中央庫(kù)的審核比較嚴(yán)格,必須有固定的一些字段,還有發(fā)布的構(gòu)件必須包含字節(jié)碼jar、源碼jar、文檔jar,這些都可以通過(guò)maven插件搞定,具體這個(gè)文件我就不貼了,請(qǐng)查看我的pom做參考:
https://github.com/looly/hutool/blob/master/pom.xml
其中必須字段是:

  • name
  • description
  • url
  • licenses
  • developers
  • scm

這里我按照原博客的方法,把發(fā)布限制在了一個(gè)profile里(Profile理解為一個(gè)構(gòu)建行為的配置,每種行為對(duì)應(yīng)一個(gè)profile,例如線上、測(cè)試的某些配置不同,就可以分為不同的profile執(zhí)行,如果你還不明白就自行百度吧~),發(fā)布需要的source插件、javadoc插件、gpg插件都在這個(gè)profile里,這樣只有在發(fā)布的時(shí)候才會(huì)生成源碼包、文檔API包和做gpg簽名。distributionManagement則是定義了releasesnapshot發(fā)布的地址,這個(gè)在Issue通過(guò)審核后工作人員會(huì)給你,還有就是snapshotRepositoryrepository 中的 id 一定要與 setting.xmlserverid 保持一致。

7. 發(fā)布到OSS

這一步主要是生成相應(yīng)的一些jar包和簽名文件,并上傳到OSS的服務(wù)器,命令也比較簡(jiǎn)單

  1. mvn clean deploy -P release -Dgpg.passphrase=你的Passphase 

這一步特別說(shuō)明下,按照原博主的說(shuō)法,執(zhí)行mvn clean deploy -P release會(huì)自動(dòng)彈出一個(gè)對(duì)話框,我這里沒(méi)有彈出來(lái)……而且報(bào)簽名異常,后來(lái)百度之,得加上-Dgpg.passphrase=你的Passphase這個(gè)參數(shù),用你自己的Passphase,就可以成功了(我嚴(yán)重懷疑Cygwin的問(wèn)題……)還有-P參數(shù)表示使用的profile名,就是profile下 release 這個(gè)標(biāo)簽的內(nèi)容。

8. 發(fā)布構(gòu)建

進(jìn)入https://oss.sonatype.org并登陸,會(huì)在左側(cè)有個(gè)staging Repositories點(diǎn)擊進(jìn)入,在右側(cè)面板找到你的構(gòu)件,狀態(tài)應(yīng)該是open,你要將其置為closed,點(diǎn)擊上方的close按鈕即可(這個(gè)按鈕我找了10分鐘我會(huì)明說(shuō)么::>_<:: )。
關(guān)閉按鈕

接下來(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í)行步驟7。

接下來(lái)你需要點(diǎn)擊release按鈕發(fā)布你的構(gòu)件。

 

9. 在Issue中通知工作人員

然后回到JIRA中你的Issue,寫個(gè)comment,我寫的是Component has been successfully issued.告訴工作人員我發(fā)布完成了,等待他們審核。審核通過(guò)后我們就可以在中央庫(kù)搜索到我們的構(gòu)件了!搜索的地址是:

  1. http://search.maven.org/ 

搜索hutool

10. 總結(jié)

當(dāng)可以搜索出來(lái)自己的構(gòu)件的那一刻實(shí)在抑制不住心中的激動(dòng),各種朋友圈去發(fā)截圖炫耀(雖然朋友圈里的同學(xué)都看不懂我截圖這玩意兒是干啥的……),有種公司在美國(guó)上市的趕腳有木有!沒(méi)辦法,屌絲只有這些追求,讓自己的代碼被更多的人使用,會(huì)感到非常有成就感。

PS.說(shuō)下發(fā)布中的一些細(xì)節(jié),在執(zhí)行第8步的時(shí)候,我只是簡(jiǎn)單的close,沒(méi)有release,結(jié)果工作人員發(fā)來(lái)郵件說(shuō)"Almost done! Looks like you still need to release the staging repository”,然后我才點(diǎn)擊release,再加了個(gè)comment才發(fā)布成功。

多一個(gè)步驟

令人欣慰的是總算完成了,感謝 @黃勇

原文鏈接:http://my.oschina.net/looly/blog/270767

 

責(zé)任編輯:林師授 來(lái)源: oschina博客
相關(guān)推薦

2015-01-26 09:57:47

GradleMaven Centr

2018-03-24 20:23:06

華為開(kāi)發(fā)者開(kāi)源

2023-05-26 08:31:09

2011-12-31 09:49:30

MavenJava

2017-02-13 20:22:42

Android發(fā)布項(xiàng)目jcenter

2023-11-20 22:35:32

2022-11-18 14:15:13

2015-08-07 13:23:27

bridgeios應(yīng)用移植

2014-09-23 09:21:48

2009-12-11 10:00:30

谷歌Chrome插件庫(kù)

2014-02-28 09:20:09

2022-10-14 07:04:21

數(shù)據(jù)中心綜合布線物聯(lián)網(wǎng)

2022-08-30 10:38:24

數(shù)據(jù)中心CORD

2009-07-17 17:00:13

在JRuby下將RoR

2017-01-09 07:05:26

谷歌編程語(yǔ)言

2012-03-15 16:59:12

JavaMaven

2023-04-03 08:33:27

2020-03-10 22:01:54

物聯(lián)網(wǎng)安全物聯(lián)網(wǎng)IOT

2009-06-23 08:46:58

Linux甲骨文數(shù)據(jù)庫(kù)

2011-07-20 09:40:44

Linux 3.0
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

青青草国产免费一区二区下载| 免费在线看电影| 午夜精品一区二区三区四区| 91香蕉电影院| 美国一级片在线免费观看视频 | 欧美一区二区三区在线观看免费| 欧美另类亚洲| 欧美一区二区三区四区视频| 这里只有精品66| 久久九九精品视频| 一区二区在线观看免费视频播放| 国产日韩欧美自拍| 日韩免费啪啪| 国产91综合网| 日本久久精品视频| 黄网站免费在线观看| 丁香激情综合国产| 日韩av免费一区| 国内自拍欧美| 欧美色综合网站| 成 年 人 黄 色 大 片大 全| 秋霞在线一区| 日韩亚洲欧美综合| 奇米影视亚洲色图| 国产精品香蕉一区二区三区| 97在线看福利| 一级日本在线| 欧美一区二区国产| 999福利在线视频| 中文字幕亚洲一区二区av在线| 日本a级片电影一区二区| 在线观看av影片| 久久成人综合网| 国产成人精品免费久久久久| 黄色影院在线看| 最好看的中文字幕久久| 超碰超碰在线观看| 视频一区欧美精品| 456亚洲影院| 中文在线字幕免费观看| 国产精品热久久久久夜色精品三区| 91久久久久久久久久| 欧美成人tv| 欧美成aaa人片在线观看蜜臀| 二区在线观看| 国产精品久久久久7777按摩| 日韩国产高清一区| 国产成人一区二区三区影院| 一区二区三区四区在线观看视频| 国产中文在线| 亚洲乱码中文字幕综合| 性一交一乱一伧国产女士spa| 韩国久久久久| 久久青草福利网站| 黄色综合网址| 欧美亚洲国产一区在线观看网站 | 欧美体内she精视频| 青春草免费在线视频| 一本一本久久a久久精品综合小说 一本一本久久a久久精品牛牛影视 | 欧美色欧美亚洲高清在线视频| 欧美h视频在线观看| 欧美涩涩网站| 中文字幕色一区二区| 国产欧美精品一区二区色综合| 久久久久久九九| 要久久电视剧全集免费| 日韩成人在线网站| 成人在线免费公开观看视频| 国产欧美一区二区精品性| x88av蜜桃臀一区二区| 97精品久久久久中文字幕| 免费日韩电影在线观看| 国产精品久久久久久久免费观看| 美女av一区二区三区| 欧美1区2区| 男人添女荫道口女人有什么感觉| 中文在线一区| 成人免费xxxxx在线观看| 午夜精品福利影院| 精品小视频在线| 岛国av在线网站| 日韩欧美视频在线| 久草中文在线| 97色在线视频观看| 毛片av一区二区| 品久久久久久久久久96高清| 精品69视频一区二区三区Q| 国产精品入口尤物| 日韩aaa久久蜜桃av| 久久精品二区| 一区二区三区成人| 久艹在线视频| 亚洲va国产va欧美va观看| 国产天堂av| 一区二区成人在线| 欧美黄色成人| www.xxxx精品| 亚洲综合av一区二区三区| 日韩av在线免费观看一区| 欧美肥老太太性生活| 成人久久一区二区三区| 中文字幕第一区第二区| 成人h动漫在线| 亚洲最大成人网4388xx| 福利一区二区三区视频在线观看| 国产亚洲一区二区在线| 深夜福利视频一区二区| 在线观看不卡av| 石原莉奈在线亚洲三区| 免费a级毛片在线观看| 午夜免费日韩视频| 99久久久久久| jizz18女人| 中文字幕亚洲精品| 久久久久毛片免费观看| 亚洲日本无吗高清不卡| 成人免费视频网站在线观看| 天堂а√在线官网| 国产精品欧美激情| 国产精品久久久久一区二区三区| 浪潮色综合久久天堂 | av影片在线看| 亚洲成人av在线| gay欧美网站| 日韩精品久久一区| 国产高清一区二区三区视频| 日本高清成人免费播放| 欧美激情二区| www日韩av| 久久99久久99小草精品免视看| 亚洲第一区视频| 日韩午夜中文字幕| 9国产精品视频| 日韩久久久久久久久久久久| 欧美刺激午夜性久久久久久久| 一区二区三区动漫| 欧美极品少妇xxxxx| 大片网站久久| 97视频免费看| 日韩码欧中文字| 国产视频福利在线| 99在线热播| 欧美日韩精品一区二区在线播放| 午夜无码国产理论在线| 无码人妻精品一区二区蜜桃百度| 国产精品理伦片| 日本午夜精品久久久| 国产导航在线| 99re在线| 欧美xxxx老人做受| 欧美理伦片在线播放| 美女胸又www又黄的网站| 日韩一区二区三区在线观看| 香蕉国产精品偷在线观看不卡| 成年人小视频网站| 欧美精品第1页| 国产精品久一| 国产精品一区二区欧美| 91年精品国产| 国产日产一区二区三区| 欧美aaa在线观看| 在线免费看av不卡| 亚洲欧美在线高清| 一区二区三区毛片免费| 国产一区二区视频播放| 欧美黄色片免费观看| 久久99热这里只有精品| 成人激情久久| 绯色av一区| 日韩videos| 欧美成人精品激情在线观看| 亚洲一区二区三区自拍| 岛国精品在线| 白天操夜夜操| 亚洲性av网站| 亚洲国产激情av| 一区二区三区毛片免费| 不卡专区在线| 91中文字幕网| 欧美亚洲一级二级| 色综合久久精品亚洲国产| 欧美亚洲网站| 日韩毛片免费视频一级特黄| 欧美一区二区影视| 精品国内亚洲在观看18黄| 免费在线看成人av| 桃花色综合影院| 最新av在线免费观看| 91av在线免费观看视频| 95精品视频在线| 日韩精品免费一区二区在线观看| 日韩av综合在线观看| 日韩欧美一级二级| 久久精品日韩一区二区三区| 黄视频网站在线观看| 国产免费999| 日韩在线观看精品| 欧美伊人久久久久久久久影院| 成人综合婷婷国产精品久久蜜臀 | 国产精品一区二区三区美女|