成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

將項目發布到Maven中央庫

開發 項目管理 前端
前幾天參考@黃勇 大神的博客 http://my.oschina.net/huangyong/blog/226738 成功將我的Hutool項目發布到了Maven的中央庫,發表這篇博客以做紀念,順便重新整理步驟并說明一下在發布過程中遇到的一些原博客中沒有說明的問題。

前幾天參考@黃勇 大神的博客 http://my.oschina.net/huangyong/blog/226738 成功將我的Hutool項目發布到了Maven的中央庫,發表這篇博客以做紀念,順便重新整理步驟并說明一下在發布過程中遇到的一些原博客中沒有說明的問題。

其實總結下來發布的過程是與Sonatype工作人員交互的過程,這個過程是在Sonatype的JIRA平臺上完成的,過程如下:

  1. 注冊
  2. 提交一個issue(提出一個發布申請),告訴工作人員我要創建一個構件。
  3. 等待工作人員審批,會給你發郵件,在這個issue下給你comment說明通過或者哪里有問題。
  4. 上傳構件
  5. 發布構建,并在哪個issue下告訴工作人員我發布了
  6. 等待審核,如果通過會告訴你需要release一下并在issue上告訴工作人員我release了
  7. 發布成功

這個過程比較漫長,慢在審核的過程,所以這個過程***在晚上進行(我23點進行的,過了幾分鐘就回復我了),等待也是焦急而激動的,總體說來整個過程還是很有成就感滴~


1. 注冊帳戶

注冊地址是 https://issues.sonatype.org/secure/Signup!default.jspa
sonatype注冊頁面

字段我就不細說了,一看就懂,不過Email非常重要,之后和工作人員的交流全靠這個郵件了。

2. 創建一個 Issue

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

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

3. 等待Issue審批

審批過程中出現過一些問題,***次提交是因為我的Group Id 不符合規范(我用的looly.github),工作人員給我修正為com.github.looly了,然后告訴我可以進行下一步了,當時沒理解,以為沒通過,結果我又重新提交了一個Issue(就是com.xiaoleilu的Group Id),然后工作人員確認這個域名是否是我自己的,我回復是(在JIRA這個Issue下加個Comment),接著就通過了。
通過審核

截圖為這個Issue的截圖,當看到 Configuration has been prepared, now you can: 這句話的時候,說明你已經通過了Issue的審批,可以上傳構建了。

4. 使用 GPG 生成密鑰對

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

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

    1. apt-cyg install gnupg 

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

  1. 生成公鑰私鑰

    1. gpg --gen-key 

一路回車,然后輸入用戶名、郵箱等,***重復兩次輸入Passphase(這個在發布的時候需要,在此牢記),如果你還是不清楚,看下這篇博客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 是需要傳到服務器的

  1. 發布公鑰

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

執行這一步在Cygwin下可能會報錯

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

原因是.gnupg的權限太大,這個目錄必須只有當前用戶本人有寫權限,所以執行

  1. chmod 700 .gnupg 

我開始的時候修改權限失敗了,原因是這個目錄的組是None,所以執行

  1. hown loolly:Users .gnupg 

給定了一個組名,這樣chmod命令就可以正常執行了。

  1. 查看是否成功

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

好的,我們的密鑰對已經準備好了,至于如何使用,請看接下來的步驟。

5. 修改setting.xml

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

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

這里的用戶名密碼就是我們在***部注冊的時候的用戶名和密碼。

6. 修改pom.xml文件

pom.xml在Maven中央庫的審核比較嚴格,必須有固定的一些字段,還有發布的構件必須包含字節碼jar、源碼jar、文檔jar,這些都可以通過maven插件搞定,具體這個文件我就不貼了,請查看我的pom做參考:
https://github.com/looly/hutool/blob/master/pom.xml
其中必須字段是:

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

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

7. 發布到OSS

這一步主要是生成相應的一些jar包和簽名文件,并上傳到OSS的服務器,命令也比較簡單

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

這一步特別說明下,按照原博主的說法,執行mvn clean deploy -P release會自動彈出一個對話框,我這里沒有彈出來……而且報簽名異常,后來百度之,得加上-Dgpg.passphrase=你的Passphase這個參數,用你自己的Passphase,就可以成功了(我嚴重懷疑Cygwin的問題……)還有-P參數表示使用的profile名,就是profile下 release 這個標簽的內容。

8. 發布構建

進入https://oss.sonatype.org并登陸,會在左側有個staging Repositories點擊進入,在右側面板找到你的構件,狀態應該是open,你要將其置為closed,點擊上方的close按鈕即可(這個按鈕我找了10分鐘我會明說么::>_<:: )。
關閉按鈕

接下來系統會自動驗證有效性,如果你的Group Id和pom.xml沒有錯誤,狀態會自動變成closed,如果有問題,會在下面提示你那里有問題,加入有問題你可以點擊drop按鈕刪掉這個構件,修改后重新執行步驟7。

接下來你需要點擊release按鈕發布你的構件。

 

9. 在Issue中通知工作人員

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

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

搜索hutool

10. 總結

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

PS.說下發布中的一些細節,在執行第8步的時候,我只是簡單的close,沒有release,結果工作人員發來郵件說"Almost done! Looks like you still need to release the staging repository”,然后我才點擊release,再加了個comment才發布成功。

多一個步驟

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

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

 

責任編輯:林師授 來源: oschina博客
相關推薦

2015-01-26 09:57:47

GradleMaven Centr

2018-03-24 20:23:06

華為開發者開源

2023-05-26 08:31:09

2017-02-13 20:22:42

Android發布項目jcenter

2023-11-20 22:35:32

2011-12-31 09:49:30

MavenJava

2022-11-18 14:15:13

2015-08-07 13:23:27

bridgeios應用移植

2014-09-23 09:21:48

2009-12-11 10:00:30

谷歌Chrome插件庫

2014-02-28 09:20:09

2022-10-14 07:04:21

數據中心綜合布線物聯網

2022-08-30 10:38:24

數據中心CORD

2017-01-09 07:05:26

谷歌編程語言

2009-07-17 17:00:13

在JRuby下將RoR

2012-03-15 16:59:12

JavaMaven

2023-04-03 08:33:27

2011-07-20 09:40:44

Linux 3.0

2020-03-10 22:01:54

物聯網安全物聯網IOT

2009-06-23 08:46:58

Linux甲骨文數據庫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91综合在线视频 | 中文欧美日韩 | 91精产国品一二三区 | 成年免费大片黄在线观看岛国 | wwwww在线观看| 亚洲综合一区二区三区 | 欧美一级在线视频 | 波多野结衣电影一区 | 亚洲一区网站 | 久久国产成人午夜av影院武则天 | 亚洲国产精品视频一区 | 精品欧美一区二区三区久久久 | 国产 日韩 欧美 中文 在线播放 | 国产69精品久久久久777 | 欧美成年网站 | 日本一区二区不卡视频 | 99精品免费久久久久久久久日本 | 免费视频一区二区 | 精品国产乱码久久久久久图片 | 美女露尿口视频 | 人人九九精| 亚洲 欧美 另类 日韩 | 成年人在线观看视频 | 欧美一区二区久久 | 成人九色 | 视频1区2区 | 欧美日产国产成人免费图片 | 国产精品美女久久久久久久久久久 | 国产久 | 国产精品永久在线观看 | 久久久久久久久久久久久91 | 日本特黄a级高清免费大片 国产精品久久性 | 亚洲国产一区二区三区, | 欧美成人专区 | 欧美精品综合在线 | av资源网站 | 日韩另类视频 | 亚洲欧美视频 | 久久毛片 | 成人国产精品一级毛片视频毛片 | 国产一区91精品张津瑜 |