先前都是配置pom.xml從Maven中央倉庫下載依賴包,幻想着哪一天咱也有個包可讓別人自動下載啊,好高大上的感受。html
現已成功利用Sonatype OSSRH將fuzhutech-ueditor
提交給Maven的中央倉庫。特發表此文以作記念。對於我這樣的新手而言,第一次發佈項目到中央倉庫,真不是一件容易的事情,因此頗有必要整理步驟並說明一下在發佈過程當中遇到的一些問題。java
官方網站:http://www.sonatype.org/git
註冊地址:https://issues.sonatype.org/secure/Signup!default.jspagithub
註冊後將信息保存到maven的conf/settings.xml中服務器
<servers> <server> <id>oss</id> <username>用戶名</username> <password>密碼</password> </server> </servers>
建立地址:https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134,或者點擊首頁的中上部「Create」按鈕。dom
該步驟字面意思就是Create 一個 issue
,咱們要New 一個 Project
(提出一個發佈申請)。實質就是申請並佔有座標Group Id。個人Issue,https://issues.sonatype.org/browse/OSSRH-31467,參考說明各項字段內容:jsp
其餘的就沒有什麼了,提交以後就等工做人員離開確認吧,有時候工做人員會問你些你沒有明確的內容,只須要回答就好。maven
大概30分鐘,系統自動回覆網站
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
我提交了,提交一條Commentui
Yes, we own the domain fuzhutech.com.
次日收到回覆,審批初步經過了。
Configuration has been prepared, ......
在等待Issue的過程當中,須要準備GPG以便對發佈的文件進行簽名。小編直接在http://www.gpg4win.org/downlo... 下載Gpg4win-Vanilla
版來使用。
gpg --version
可以顯示 GPG 的版本信息,說明安裝成功了。
gpg --gen-key
此時須要輸入realName、Email、Comment等字段,其它字段可以使用默認值,此外,還須要輸入一個 Passphase,至關於一個密鑰庫的密碼,最好記下來,由於後面會用到。
gpg --list-keys
輸出以下信息:
pub 2048R/DEF22C2D 2017-05-23 uid [ultimate] fuzhutech (fuzhutech) <fuzhutech@163.com> sub 2048R/A8C6E2E2 2017-05-23
這裏的公鑰的 ID 是:DEF22C2D。
gpg --keyserver hkp://pool.sks-keyservers.net --send-keys DEF22C2D
此後,可以使用本地的私鑰來對上傳構件進行數字簽名,而下載該構件的用戶可經過上傳的公鑰來驗證簽名,也就是說,你們能夠驗證這個構件是否由本人上傳的,由於有可能該構件被壞人給篡改了。
gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys DEF22C2D
從key server
上經過公鑰 ID 來接收公鑰,此外,也能夠到sks-keyservers.net
上經過公鑰 ID 去查詢。後續OSS進行簽名驗證成功的前提就是公鑰發佈成功。
<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
配置的是生成密鑰對時輸入的Passphase
。
pom.xml
在Maven中央庫的審覈比較嚴格,必須有固定的一些字段,包括:name、description、url、licenses、developers、scm 等基本信息。
具體這個文件我就不貼了,請查看個人pom作參考:https://github.com/fuzhutech/...。
distributionManagement
則是定義了release
和snapshot
發佈的地址,這個在Issue經過審覈後工做人員會給你,還有就是snapshotRepository
與 repository
中的 id 必定要與 setting.xml
中 server
的 id
保持一致。
由於這些執行一般都獨立於標準構建流程,因此把他們移動到一個profile,發佈須要的source插件、javadoc插件、gpg插件都在這個profile裏,這樣只有在發佈的時候纔會生成源碼包、文檔API包和作gpg簽名。
待項目編寫完成,就能夠進行上傳、發佈了。在命令行進入項目pom.xml
所在路徑,執行命令提交到OSS服務器。
mvn clean deploy
mvn clean deploy -P release
能夠手動修改,也能夠執行mvn versions:set -DnewVersion=1.0.0
注意:此時上傳的構件並未正式發佈到中央倉庫中,只是部署到 OSS 中了,下面纔是真正的發佈。
上傳成功後須要在OSS系統中對操做進行確認,登陸https://oss.sonatype.org/,在左邊菜單找到「Staging Repositories」
,點擊,在右邊上面一點有一個輸入搜索框輸入你的groupid
進行快速定位,能夠發現這時你的構件狀態是「open」
,勾選你的構件,查看校驗的結果信息,若是沒有錯誤就能夠點擊剛纔勾選的checkbox上面右邊一點的「close」
按鈕,在彈出框中「confirm」
。
接下來系統會自動驗證有效性,若是你的Group Id
和pom.xml
沒有錯誤,狀態會自動變成closed
,若是有問題,會在下面提示你那裏有問題,加入有問題你能夠點擊drop
按鈕刪掉這個構件,修改後從新執行步驟五。
成功後狀態會變爲「closed」,點擊release按鈕發佈。
回到issue系統,找到你的那個申請的issue,寫個comment,I promoted my first release, thanks
,說明首次發佈完成了,等待他們審覈。
審覈經過後咱們就能夠在中央庫搜索到咱們的GroupId!搜索的地址是: http://search.maven.org/
成功的發佈離不開各個前臺帖子的指導,雖然我沒有按照帖子一步成功,但我但願能夠幫助一些人少走一些彎路,小白不易,且行且珍惜。