JCenter 已經提桶跑路,是時候學會上傳到 Maven Central 了

1。 JCenter提桶跑路

用了這麼多年的JCenter,終於要“跑路”了,還是有點依依不捨的。 詳情可以參見本公眾號的這篇文章: https://mp。weixin。qq。com/s/rgqSMyF9ROs-WOvK_aJZNQ

以前也寫過JCenter上傳的方法: 《2020最新透過novoda上傳到JCenter的方法、技巧及遇到的坑》

不過現在如果再想上傳包到JCenter已經是不可以的了,提示如下:

JCenter 已經提桶跑路,是時候學會上傳到 Maven Central 了

2。 轉戰Maven Central

Google在 Android Studio 4。2 把Maven Central作為gradle的預設配置了,所以我們還是把包放在官方指定的倉庫中比較保險。

相比JCenter這樣的第三方倉庫,Maven Central的操作就稍顯複雜,不過我們只要把思路理清理順了,其實也沒有那麼難操作。

Step1:準備環境

OS: Windows10 IDE: Android Studio 4。1。3 Android Gradle Plugin Version: 4。1。3 Gradle Version: 6。5 GPG: Gpg4win-3。1。15

Step2:提交Issue

如果想要往Maven Central上傳包,首先需要提交一個Issue進行申請。 申請網址:https://issues。sonatype。org/secure/Dashboard。jspa 如果沒有賬號,請先註冊一個,這個賬號跟後續登入maven倉庫網站是一樣的,需要注意。

提交Issue需要選擇的型別和填寫的內容如下圖紅框內所示:

JCenter 已經提桶跑路,是時候學會上傳到 Maven Central 了

這裡需要特別注意

Group Id

,因為這涉及到域名,需要你擁有這個域名的所有權,不能隨便填寫,否則驗證不透過。

如果沒有域名,你可以使用你在GitHub上註冊的賬號,比如我這邊是github。com/ddnosh,那麼我們申請的Group Id可以寫成com。github。ddnosh。

提交了Issue後,系統會馬上給你傳送一個comment,讓你對Group Id進行驗證,比如我們用的是GitHub網站的域名,系統讓我們在賬號下新建一個專案以便驗證這個Group Id是你的:

JCenter 已經提桶跑路,是時候學會上傳到 Maven Central 了

如果是其它域名的話,需要在域名下進行驗證,具體參考系統給你發的Comment。

我們在GitHub上建立好這個專案後,在這個Issue下面留言讓它們去檢測,系統如果檢測成功,會發送如下資訊:

JCenter 已經提桶跑路,是時候學會上傳到 Maven Central 了

這樣我們就有許可權去上傳包了,下一步我們介紹如何上傳包。

Step3:配置

官網也有介紹如何透過gradle上傳包的,參考如下文章: https://central。sonatype。org/pages/gradle。html 不過我們今天介紹透過第三方的外掛:Gradle Nexus Staging,進行上傳。

下面就介紹下配置的一些資訊。

首先,在專案根目錄的build.gradle中新增apply:

apply plugin: ‘io。codearte。nexus-staging’

然後在dependencies中新增兩個classpath:

classpath ‘com。github。dcendents:android-maven-gradle-plugin:2。1’ classpath ‘io。codearte。gradle。nexus:gradle-nexus-staging-plugin:0。30。0’

接下來在專案的根目錄下新增一個專門用於上傳的gradle指令碼

,這裡我們叫做publish-mavencentral。gradle,這是一個模板,可以直接拿來用,可以直接點選檢視:publish-mavencentral。gradle

可以看到publish-mavencentral.gradle腳本里面有一些引數需要設定的,那麼我們下面就是要定義這些引數,為了安全起見,這些引數我們全部定義在local.properties中:

signing。keyId=AAAAAAAAsigning。password=123signing。secretKeyRingFile=C:/android/xxx。gpg##nexus賬號資訊,也就是建立工單時的賬號和密碼ossrhUsername=xxxossrhPassword=456

後面的工作就是看看這5個引數如何設定的:

ossrhUsername和ossrhPassword很簡單,就是我們在【Step2:提交Issue】中註冊的使用者名稱和密碼。

signing相關的3個引數是跟我們包的簽名相關的,這裡我們使用gpg4win,官網下載地址:https://www。gpg4win。org/index。html

接下來我們就介紹下signing.keyId、signing.password、signing.secretKeyRingFile是怎麼定義的。

生成金鑰對

gpg ——gen-key

JCenter 已經提桶跑路,是時候學會上傳到 Maven Central 了

signing。keyId我們只需要取最後的8位; signing。password就是我們在生成金鑰對過程中要求我們輸入的;

如果需要檢視keyId,可以輸入如下命令:

gpg ——list-key

signing。secretKeyRingFile 這個檔案到底是什麼檔案呢?其實它就是gpg key的secret。 那麼怎麼獲取呢?很簡單,開啟安裝好的Gpg4win軟體,這裡名字叫做Kleopatra: 右鍵,選擇Backup Secret Keys…,儲存為gpg格式的檔案,然後這個檔案的路徑就是signing。secretKeyRingFile的值。

Step4:上傳包(jar/aar)

經過上面的準備工作,我們接下來就進入到激動人心的時刻了,將我們的包上傳到Maven倉庫,是不是很心動呢? 開啟Android Studio右上角的Gradle,選擇圖示的publish,雙擊執行即可。

JCenter 已經提桶跑路,是時候學會上傳到 Maven Central 了

我們登入:https://s01。oss。sonatype。org/,賬號密碼就是我們註冊Issue時的賬號密碼。 我們選擇左側的Staging Repositories,可以看到我們剛剛上傳的包:

JCenter 已經提桶跑路,是時候學會上傳到 Maven Central 了

我們選中自己的包,然後點選“Close”按鈕:

JCenter 已經提桶跑路,是時候學會上傳到 Maven Central 了

然後系統會幫我們對包進行一系列的檢測工作,我們看到有一個錯誤:

Failed: Signature Validation

意思是包簽名出錯。原來我們本地用Gpg4win生成的金鑰對,沒有將公鑰上傳到官網驗證包指定的伺服器地址,透過右側的日誌我們也可以看到,系統對一些可以上傳公鑰的伺服器進行驗證時沒有發現我們上傳的公鑰,於是就報錯了。 解決方案也很簡單,就是從右側選一個伺服器地址,將我們本地生成的公鑰上傳上去即可。 上傳的命令如下:

gpg ——keyserver http://keys。openpgp。org:11371 ——send-keys xxxxxxxx

公鑰也是要最後8位即可。

JCenter 已經提桶跑路,是時候學會上傳到 Maven Central 了

再次點選“Close”後可以看到,一系列的驗證成功了。 然後我們點選“Release”按鈕,將包正式地釋出出去:

JCenter 已經提桶跑路,是時候學會上傳到 Maven Central 了

包釋出後,並不能馬上在Maven倉庫看到,同樣需要稽核。 你會發現在原先的Issue裡多了一個系統傳送的Comment:

JCenter 已經提桶跑路,是時候學會上傳到 Maven Central 了

也就是你在https://s01。oss。sonatype。org/中過個幾分鐘就可以搜到你的包,如圖的方式:

JCenter 已經提桶跑路,是時候學會上傳到 Maven Central 了

但是要在真正的Maven倉庫(也就是透過implementation方式引入的庫),還需要等待差不多2個小時。 到時候你可以透過https://search。maven。org/查詢你的包,看看是否能查詢到,比如透過包名的方式:

JCenter 已經提桶跑路,是時候學會上傳到 Maven Central 了

好了,把包上傳到Maven Central的方法介紹完成!!!