1. 在 https://issues.sonatype.org/secure/Signup!default.jspa (其實類似于本地倉庫nexus,只是在上傳maven公共倉庫,需要經過這個第三方組織的公共倉庫)注冊賬號,如果已有,則跳過該步;
2. 如果創建 groupId ,則需要新建一個工單(Issues),點擊導航最上面的Create按鈕,然后會彈出下面的對話框,將Project=Community Support和Issue Type=new project,然后根據Java包的功能分別寫上Summary、Description、Group Id、SCM url以及Project URL、Usernames等必要信息,創建完之后需要等待Sonatype的工作人員審核處理,審核時間還是很快的,我的審核差不多等待了半個小時。當Issue的Status變為RESOLVED后,同時會收到郵件,此時就可以進行下一步操作了。
注意:
項目類型是 Community Support - Open Source Project Repository Hosting
groupId 對應的域名,你需要有所有權
如果是在已有的 groupId 中提交更新,要么創建人在創建issue時添加你的用戶名進去到他的issue中。要么自己創建issue,按上面步驟,并且說明清楚。
3. 使用gpg生成密鑰對
1)如果使用的是Windows,可以到https://www.gpg4win.org/download.html下載gpg4win,推薦使用 Gpg4win-Vanilla 2.3.3版本
2)如果使用的是Linux,可以通過yum install gpg命令安裝gpg。
linux下: gpg --gen-key
windows下: gpg –-gen-key
4. 檢查已生成的密鑰列表
gpg --list-keys
第一行是公鑰文件路徑,第二行是公鑰信息,第三行是用戶ID,第四行是私鑰信息。
5. 將公鑰發布到 PGP 密鑰服務器
gpg --keyserver hkp://pool.sks-keyservers.net --send-keys B15C5AA3
B15C5AA3 是公鑰信息
6. 查詢公鑰是否發布成功
gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys B15C5AA3
7. 修改Maven配置文件
需要修改全局的setting.xml和項目的pom.xml文件。
setting.xml
找到maven的全局配置文件settings.xml,在里面找到 節點,這個節點默認是注釋掉的,增加如下配置:
sonatype-nexus-snapshots
Sonatype網站的賬號
Sonatype網站的密碼
sonatype-nexus-releases
Sonatype網站的賬號
Sonatype網站的密碼
上面的username和password就是你在步驟一注冊的帳號和密碼。
pom.xml
org.sonatype.oss
oss-parent
7
并增加Licenses、SCM、Developers信息等,在此不貼源碼了。
sonatype-nexus-snapshots
https://oss.sonatype.org/content/repositories/snapshots
sonatype-nexus-releases
https://oss.sonatype.org/service/local/staging/deploy/maven2
此處,snapshotRepository 與 repository 中的 id 一定要與 setting.xml 中 server 的 id 保持一致。
8. 部署和發布Jar包
在源碼目錄下,使用命令方式執行:
mvn clean deploy -P sonatype-oss-release
執行以上 Maven 命令時,會提示需要輸入上面提到的 Passphase,它就是剛才設置的 GPG 密鑰庫的密碼
上述命令執行后,Jar包將會發布到sonatype的構件倉庫中,可以到 https://oss.sonatype.org/#stagingRepositories 查看發布好的Jar
9. 在 OSS 中,使用自己的 Sonatype 賬號登錄后,可在 Staging Repositories 中查看剛才已上傳的構件,這些構件目前是放在 Staging 倉庫中,可進行模糊查詢,快速定位到自己的構件。此時,該構件的狀態為 Open,然后依次點擊上方的Close–>Confirm,在彈出的對話框中輸入Jar包的描述信息,這個信息將會在Maven搜索結果當作簡介介紹Jar包的,所以建議輸的詳細點。當狀態變成closed后,執行Release–>Confirm,同樣會彈出一個類似于上面的對話框,還是輸入那些介紹信息即可,當這步執行完之后,構件將會自動刪除。
10. 通知 Sonatype 構件已成功發布
在第2步中創建的Issue下面回復一條“The component has been successfully released”的評論,即通知 Sonatype 的工作人員為需要發布的構件做審批,發布后會關閉該Issue。
11. 等待構件審批通過
審批通過后,將會收到郵件通知。
12. 從中央倉庫中搜索構件
大概2小時后,可以在Maven中央倉庫搜索到