从零开始上传开源项目到Maven中央仓库
目錄
- 介紹
- 簡單講解一下上傳到Maven中央倉庫流程
- Maven(sonatype)賬號準備
- 1.注冊Sonatype JIRA賬號
- 2.創(chuàng)建工單
- 3.驗證GroupId
- 基于域名驗證
- 基于開源倉庫的驗證
- 4.流轉工單狀態(tài)
- 5.工單處理完成
- 6.登錄nexus repository manager
- 7.nexus repository manager平臺生成User Token
- Maven項目打包并上傳流程
- 打包簡要配置說明
- 1.工程pom.xml配置
- pom項目基本信息
- maven中snapshot與release版區(qū)別
- 配置分發(fā)管理
- pom打包插件配置
- 2.Gpg 簽名工具安裝與使用
- 下載
- 生成秘鑰
- 3.配置~/.m2/setting.xml
- 4.打包-部署
- 最后流程
- 坑總結
- 中央倉庫無法找到我的包
- https://oss.sonatype.org與https://s01.oss.sonatype.org
- 心得
介紹
第一次比較正式的開源的自己的項目,心里還是很激動的,于是迫不及待的想要上傳到Maven中央倉庫,方便使用者引用。本教程將會從零開始講解,但是由于時效的變化,在每個過程還是需要讀者本身自己思考如何處理遇到問題。
簡單講解一下上傳到Maven中央倉庫流程
Maven(sonatype)賬號準備
1.注冊Sonatype JIRA賬號
https://issues.sonatype.org/secure/Signup!default.jspa這個連接便是注冊地址,下方是圖片
按照提示注冊即可,沒有什么需要說的,唯一需要說的就是賬號密碼記錄清楚,畢竟這個不常用。注冊完成后就登錄
2.創(chuàng)建工單
點擊下方的Create按鈕,界面風格可能在以后有變動,但是大體意思很明確,那就是找到創(chuàng)建工單的地方
Proejct選擇(Community Support - Open Source Project Repository Hosting (OSSRH)),這里面選項很多,我們選的這個選項意思就是(社區(qū)支持的開源項目托管庫OSSRH-我們就可以理解為這就是Maven私服倉庫)
根據(jù)下方的表格提示填入內容,這里說明一下
- Summary就是你的項目名
- Description選填
- GroupId(這個是最重要的,后臺管理員審核的也是這個,往下看會專門介紹GroupId如何寫,當然這個在創(chuàng)建成功后也可以改)
- Project URL 你的項目官網(wǎng)或者git地址都可以的
- SCM url 你的開源倉庫地址,比如github,gitee等等
- username 你的牛逼名稱
3.驗證GroupId
由于我都已經(jīng)把所有流程創(chuàng)建好了,所以我只能根據(jù)工單的變化日志來寫教程了。最開始我的GroupId是org.pettyfox.timeline
上圖大概意思是說你是否擁有pettyfox.org,本來想去買個.org域名的但是遺憾的發(fā)現(xiàn),目前國內買不了,因此我便更改GroupId為com.pettyfox.timeline,在之前我是擁有pettyfox.com域名的,
基于域名驗證
Do you own the domain pettyfox.org? If so, please verify ownership via one of the following methods:Add a TXT record to your DNS referencing this JIRA ticket: OSSRH-71087 (Fastest) https://central.sonatype.org/faq/how-to-set-txt-record/ Setup a redirect to your https://github.com/mathcoder23 page (if it does not already exist)大體意思就是在域名的根解析中加一個TXT類型的解析,并且內容是OSSRH-71087這里你的根據(jù)你自己的OSSRH-xxx來更改,這個域名操作應該很簡單吧,我就不貼步驟了。這樣做的目的很簡單,就驗證你是否是這個域名的擁有者。
關于域名與GroupId的關系:如果我們擁有域名 比如opensource.com,那么GroupId必須是com.opensource開頭,后面怎么寫不重要.
基于開源倉庫的驗證
有時候我們沒有域名,并且也不想去買,那么我們可以通過開源倉庫的平臺來驗證,比如GitHub、GitLab、Gitee、Bitbucket、SourceForge
下面是官方的引導教程
首先你可以進入 https://central.sonatype.org/publish/requirements/coordinates/查看詳細的步驟。
下面是GroupId與項目名稱的對應關系,安裝對應的教程來操作即可
最關鍵的一步應該就是創(chuàng)建一個公開倉庫名為OSSRH-xxx或者在github的pages網(wǎng)頁中創(chuàng)建OSSRH-xxx
GroupId的驗證基本上就是這樣,其中最關鍵的還是根據(jù)管理員推送的GroupId驗證指導來,仔細閱讀他說的內容即可,這才是最好的方案,因為這些流程隨時可能會更新、廢棄等等。
4.流轉工單狀態(tài)
這一步的作用就是告訴管理員我們的準備做好了,你幫我處理一下。
我這里已經(jīng)是RESOLVED了,你們的應該是OPEN,我忘記在哪里點了,反正在紅框中找到某個按鈕將狀態(tài)改為:WAITING FOR RESPOSE即等待響應
變更OPEN為等待響應狀態(tài)
5.工單處理完成
如果一切順利,大約幾分鐘就會有結果,結果如下,最終的工單狀態(tài)會變成RESOLVED
第一行的變更組名不過在意,下方的消息就是告訴我已經(jīng)驗證我是com.pettyfox的擁有者,
告訴我的Maven私服管理地址是https://s01.oss.sonatype.org這里需要注意的是你的地址到底是哪個需要根據(jù)評論的內容來,因為在以前是oss.sonatype.org,我的內容如下
上面的文字就是告訴我們Maven倉庫地址,以及快照地址、正式版地址
這里要注意一個坑,Please comment on this ticket when you've released your first component(s), so we can activate the sync to Maven Central.這里說了一句你必須評論一次(最下方Comment發(fā)一條內容),才能激活組件同步到中央倉庫
6.登錄nexus repository manager
由上述官方回復的內容可知,我們的nexus repository manager地址是https://s01.oss.sonatype.org,并且賬號密碼與Sonatype JIRA的賬號密碼相同
登錄后頁面如下
為了后續(xù)方便maven打包上傳驗證,我們申請基于Token的方式驗證
7.nexus repository manager平臺生成User Token
此步驟可以在后面打包上傳時來完成,可以跳過
在后臺右上角點擊用戶名后,點擊Profile
選擇下方下拉框,選中User Token
按照提示創(chuàng)建一個User Token即可,并且保存
現(xiàn)在關于賬號的準備我們已經(jīng)全部完成
Maven項目打包并上傳流程
這里說明一下,其實官方引導的文檔已經(jīng)說的很清楚了下面我貼一下地址,可以參考
- https://central.sonatype.org/publish/publish-maven/
打包簡要配置說明
1.工程pom.xml配置
一下的pom是指工程下的pom.xml
pom項目基本信息
<name>timeline-mq</name> <description>A message queue for timeline. core is redis stream</description> <url>https://github.com/mathcoder23/timeline-mq</url> <licenses><license><name>The Apache Software License, Version 2.0</name><url>http://www.apache.org/licenses/LICENSE-2.0.txt</url></license> </licenses> <developers><developer><name>Petty Fox</name><email>mathcoder23@126.com</email><url>https://github.com/mathcoder23</url></developer> </developers><scm><url>https://github.com/mathcoder23/timeline-mq</url><connection>https://github.com/mathcoder23/timeline-mq.git</connection><developerConnection>https://github.com/mathcoder23/timeline-mq</developerConnection></scm>這一步配置按照理解填寫即可
maven中snapshot與release版區(qū)別
在maven版本管理中,將jar包劃分為兩個重要的版本一個是快照版、一個是正式版,快照版意味著可能頻繁的更新、變動,因此maven同步時每次都要去拉
配置分發(fā)管理
<distributionManagement><snapshotRepository><id>ossrh</id><url>https://s01.oss.sonatype.org/content/repositories/snapshots</url></snapshotRepository><repository><id>ossrh</id><url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url></repository></distributionManagement>這里需要注意一下,你的私服地址與我的是否一樣很重要,你需要去看工單中官方給你回復的指導文檔中地址是多少才是多少
pom打包插件配置
<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId><version>2.2.1</version><executions><execution><id>attach-sources</id><goals><goal>jar-no-fork</goal></goals></execution></executions></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-javadoc-plugin</artifactId><version>2.9.1</version><executions><execution><id>attach-javadocs</id><goals><goal>jar</goal></goals></execution></executions><configuration><tags><tag><name>date</name></tag></tags></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-gpg-plugin</artifactId><version>1.5</version><executions><execution><id>sign-artifacts</id><phase>verify</phase><goals><goal>sign</goal></goals></execution></executions></plugin><plugin><groupId>org.sonatype.plugins</groupId><artifactId>nexus-staging-maven-plugin</artifactId><version>1.6.7</version><extensions>true</extensions><configuration><serverId>ossrh</serverId><nexusUrl>https://s01.oss.sonatype.org/</nexusUrl><autoReleaseAfterClose>false</autoReleaseAfterClose></configuration></plugin></plugins></build>建議上述的pom代碼不要不思考的復制粘貼,一定要想它的作用是什么,跟你的環(huán)境是否一致
2.Gpg 簽名工具安裝與使用
下載
https://www.gnupg.org/download/安裝提示下載即可,然后自行安裝。安裝完成后重啟命令行,應該便會有gpg命令
生成秘鑰
指定命令 gpg --gen-key,按照提示填入相應信息
maven-gpg-plugin插件應該會讀取Gpg的密鑰信息
3.配置~/.m2/setting.xml
下面配置用于在打包后上傳的認證
這里的賬號密碼可以是上述教程生成的User Token也可以是登錄密碼,
需要注意server下的id必須與pom.xml中定義的一致
4.打包-部署
mvn clean package
執(zhí)行此命令后,就會開始打包,在過程中會提示輸入Gpg的密鑰密碼。
最后流程
完成打包命令后,我們登錄https://s01.oss.sonatype.org/
一般我們發(fā)布的包,在Staging Repositories,需要經(jīng)歷Close檢測,然后在Release,但是有些會自動完成的。假如你發(fā)現(xiàn)Staging Repositories有你提交的包,那么你需要Close一下,然后Release,否則你直接在此倉庫中搜索就可以搜索到的。
如下圖
上述完成后我們搜索組件
至此,我們便成功了
坑總結
中央倉庫無法找到我的包
看下方紅框的內容,意思是你需要評論一下這個工單,才會激活將私倉同步到中央倉庫的行為。
最后我們點擊左下角的Comment評論過后,高興的收到成功的回復了。大概意思就是說,已經(jīng)給我開啟了同步任務,在https://repo1.maven.org/maven2/可以拉到組件的時間通常在半個小時,在https://search.maven.org可搜索到通常在4個小時。
https://oss.sonatype.org與https://s01.oss.sonatype.org
在以前的一下教程中,是使用oss這個二級域名,但是2021年二月開始,使用s01這個三級域名
從這個三級域名來看,后面不保證不會出現(xiàn)s02、s03這樣的地址所以自己看自己對應的文檔才是最重要的
心得
本教程只能給你一些在流程、注意事項的引導,由于文檔的變化與發(fā)展,任何時候,我們應該將官方文檔作為首要參考,其他的博客內容包含本博客應該是次要參考。sonatype回復的指導流程已經(jīng)非常詳細了。認真理解表達的內容也是避坑的途徑。
總結
以上是生活随笔為你收集整理的从零开始上传开源项目到Maven中央仓库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IPNC_RDK_McFW_UserGu
- 下一篇: 【认证须知】什么是HCIE?为什么要考?