Maven是Java中最常用的依賴管理工具,Maven的中央倉庫保羅萬象,涵蓋了各個領域的框架、工具和文檔,也是Java生態強大生命力的體現。我們自己開發的一些有用有趣的代碼也可以通過打包上傳到maven中央倉庫的方式分享給他人,也為開源社區做了貢獻。本文記錄了上傳bloomfilter算法實現代碼的大概過程,如對bloomfilter感興趣請參考:https://github.com/wxisme/bloomfilter
考慮到他人使用的可靠性,建議在上傳之前做全面測試。
提交工單
首先要向sonatype提交工單,請求創建一個新的項目,如果你沒有賬號可以先注冊一個,記住賬戶和密碼。登錄成功后Create
Project:Community Support - Open Source Project Repository Hosting
Issue Type:New Project
Summary:bloomfilter
Group Id:com.github.wxisme
Project URL:https://github.com/wxisme/bloomfilter
SCM url:https://github.com/wxisme/bloomfilter.git
Already Synced to Central:默認no
其他內容可以不用填寫,提交后等待工作人員review,如果提供的信息沒有問題的話,很快(美國工作時間里的幾分鍾)狀態就會由open變為resolved
頁面下面會有一條評論提供了許多接下來操作的信息,可以參考,注意最后一句。如果你已經接下來已經發布成功,可以添加評論和工作人員說明。
Maven相關配置
在你要發布的工程的pom文件里引入oss-parent父依賴,可以省去一些發布配置:
<parent> <groupId>org.sonatype.oss</groupId> <artifactId>oss-parent</artifactId> <version>7</version> </parent>
接着在pom中完善license、scm、developer的信息:
<licenses> <license> <name>GNU Lesser General Public License Version 3</name> <url>http://www.gnu.org/licenses/lgpl.txt</url> <distribution>repo</distribution> </license> </licenses> <scm> <tag>master</tag> <url>https://github.com/wxisme/bloomfilter.git</url> <connection>scm:git:https://github.com/wxisme/bloomfilter.git</connection> <developerConnection>scm:git:https://github.com/wxisme/bloomfilter.git</developerConnection> </scm> <developers> <developer> <name>Wang Xu</name> <email>xxx@xxx.com</email> <organization>xxx</organization> </developer> </developers>
然后打開Maven的settings.xml配置文件,配置sonatype賬號信息,注意別加錯地方:
<servers> <server> <id>sonatype-nexus-snapshots</id> <username>Sonatype 賬號</username> <password>Sonatype 密碼</password> </server> <server> <id>sonatype-nexus-staging</id> <username>Sonatype 賬號</username> <password>Sonatype 密碼</password> </server> </servers>
配置gpg-key
gpg-key是用來對代碼、二進制包進行簽名校驗用的,使用起來非常簡單,可以通過這篇文章了解一下。
windows系統可以通過https://www.gpg4win.org/download.html下載安裝,mac和linux可以直接通過命令安裝,例如mac安裝命令:
brew install gpg
Linux安裝命令:
# Debian / Ubuntu 環境 sudo apt-get install gnupg # Fedora / CentOS環境 yum install gnupg
安裝好后就可以開始生成私鑰和公鑰了,命令行執行:
gpg --gen-key
之后每一步會有提示,如果你不了解可以全部默認,也可以參考GPG入門教程,注意生成過程中需要輸入一個密鑰密碼,需要記住。
部署
接下來就可以使用maven來部署,首先確保你的代碼可以通過測試,能夠打包成功,密鑰密碼是上一步中你輸入的密碼:
mvn clean deploy -P sonatype-oss-release -Darguments="gpg.passphrase=密鑰密碼"
如果執行失敗,並且報錯如下:
gpg: 簽名時失敗: Inappropriate ioctl for device gpg: signing failed: Inappropriate ioctl for device
這說明你安裝的gpg版本較新,需要額外配置,在gpg安裝目錄(mac的是~/.gnup)下建立兩個配置文件:gpg.conf、gpg-agent.conf,
然后在gpg.conf添加:
use-agent
pinentry-mode loopback
在gpg-agent.conf下添加:
allow-loopback-pinentry
保存后再次執行上面的deploy命令,如果還有報錯,通常情況下是你上面maven配置出了問題,檢查maven配置是否有語法錯誤,配置的賬號和密碼等有無需要轉義的特殊字符。還需要注意的是生成密鑰和執行部署命令的必須是同一台機器。
發布
如果以上步驟都沒有問題,現在構件倉庫中應該有你剛才部署的構件,訪問https://oss.sonatype.org/#stagingRepositories查看,一般情況下是最后一個,此時的狀態應為open。現在就可以發布了,首先把上面生成的公鑰上傳到第三方key服務器,執行如下命令:
gpg --list-keys pub 2048R/824B4D7A 2019-01-06 uid [ultimate] xxx <xxx@xxx.com> sub 2048R/7A10AD69 2019-01-06
公鑰是824B4D7A,可能格式不同,可能更長,將公鑰復制下來,執行如下命令:
gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys 824B4D7A
如果執行成功,接下來就可以執行發布操作:
1.選中你發布的模塊 2.點擊上方的Close->Confirm 3.查看Activity的狀態是否為Closed,需要等待 4.如果狀態為Closed執行Release->Confirm,默認選中成功后自動刪除 5.查看Activity狀態,如果被刪除了,說明已經發布成功
發布操作執行完成后,可以在頁面左側點擊Advanced Search:
此時你能搜到你發布的模塊,說明就已經大功告成:
現在查看一下最初第一步提交的工單:
系統多出一條評論,意思是發布成功后,一般10分鍾內會被發布到maven中央倉庫,但要更新到search.maven.org需要2個小時,這樣的話同步到國內鏡像的時間會更久,你只需要耐心等待,然后再做一些必要的測試就好了。至於你發布成功后要不要通過評論告訴工作人員,那就看你心情吧:)