記一次向maven中央倉庫提交依賴包


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個小時,這樣的話同步到國內鏡像的時間會更久,你只需要耐心等待,然后再做一些必要的測試就好了。至於你發布成功后要不要通過評論告訴工作人員,那就看你心情吧:)

 

參考資料

如何發布jar包到maven中央倉庫

GPG入門教程


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM