項目中總會依賴一些大牛的開源庫,例如 Android 開發 通過以下方式就可以方便的引入庫。那么如何將我們自己的庫也能這樣來使用呢?下面我們將詳細的講解每一步的過程:
implementation 'io.github.meetsl:SCardView:1.0'
一、通過 sonatype 把你的開源庫提交到Maven的中心庫
1.首先,在 sonatype 官網中注冊賬號。
2. 然后在 https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134 中新建一個“Project ticket”。
點擊 Create 之后,你就會進入一個 jira 頁面(sonatype 使用jira 來追蹤每一個項目進度),與此同時你注冊時使用的郵箱中也會收到一封郵件提示你,任務創建成功,正在等待處理。
3. 創建完畢后就等待一段時間,刷新頁面。當狀態變為“resolved”,然后你就可以使用Gradle上傳項目了。或者就等着接收 sonatype 的反饋郵件,確認已經為你創建好了新項目
4. 上傳項目到 Maven 中心倉庫
示例項目是一個 Android 項目,所以通過在開源庫的 Libray Module 下的 build.gradle 末尾添加如下配置:
apply plugin: 'maven' apply plugin: 'signing' signing { sign configurations.archives } group = "io.github.meetsl" archivesBaseName = "SCardView" version = "1.0" uploadArchives { repositories { mavenDeployer { beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") { authentication(userName: ossrhUsername, password: ossrhPassword) } snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") { authentication(userName: ossrhUsername, password: ossrhPassword) } pom.project { name 'SCardView' packaging 'aar' description 'This is a view that is similar to the CardView of google ,but it can change the position of shadow and the shadow color of it . ' url 'https://github.com/meetsl/SCardView-master' scm { connection 'scm:git:https://github.com/meetsl/SCardView-master.git' developerConnection 'scm:git:https://github.com/meetsl/SCardView-master.git' url 'https://github.com/meetsl/SCardView-master.git' } licenses { license { name 'The Apache License, Version 2.0' url 'http://www.apache.org/licenses/LICENSE-2.0.txt' } } developers { developer { id 'xxxxxx' name 'xxxxxx' email 'xxxxxxxx.com' } } } } } }
在上面的代碼中,大家請將根域中的 group , archiveBaseName , version 以及 uploadArchives#pom.project 中的相關描述信息替換成自己的就好了。這些信息將會在接下來上傳的時候,自動打包成 Maven 項目,並封裝相應信息。
5. 上面配置好了相應的版本信息,接下來我們需要配置上傳時需要的簽名以及密碼等相關信息
① 首先我們需要創建一個 gpg 簽名秘鑰,並將公鑰上傳到指定服務器。對於在 MacOS 下,我們可以下載一個叫做GPGTools (http://www.gpgtools.org)的工具生成我們的簽名文件。在 Windows 下,我們下載安裝一個 Kleopatra(https://www.gpg4win.org/thanks-for-download.html)工具生成我們的簽名文件。這兩個工具使用基本一致,在安裝完成之后,新建一個密鑰對,並將本地公鑰上傳到指定服務器。
② 上傳完成之后,就可以正式配置簽名信息以及你的 Maven 賬戶信息了,我們在 Library Module 的根目錄下新建一個 gradle.properties 文件,內容如下:
signing.keyId= 密鑰的ID (注意一下,密鑰ID 是一個八個字節的字符串 Kleopatra工具需要懸浮在 密鑰ID 一欄查看 ) signing.password= 密鑰的密碼 (生成證書時填寫的密碼) signing.secretKeyRingFile=..\\secret.gpg(secret.gpg為私密證書。將導出的私密證書,放置在工程目錄下) ossrhUsername= sonatype 賬號 ossrhPassword= sonatype 密碼
配置成功之后,按照下圖運行 uploadArchives 就可以開始上傳了,這樣就可以將你的文件上傳到 Maven 中央庫了
6. 將上傳的開源庫發布出去
通過上面的步驟,我們只是把開源庫放置在了一個私有的 Maven 倉庫中,是不能被其他人所訪問的。所以還需要我們自己將它發布出去。那么如何發布:
① 進入 Maven 項目控制台
進入以下地址:https://oss.sonatype.org/,並使用 sonatype 的賬號密碼在右上角進行登錄。
② 查找你上傳的項目
如果你登錄成功,在左側的導航欄,你會看到一個叫做 Staging Repositories 的選項,點擊它,你會發現出現了很多列表選項,如下圖4。
根據列表名稱,你會發現一個以你的 groud id 去掉點號后加上一個四位數字命名的Repository,選中它,你會發現上方的 Close 按鈕亮起,當你確認上傳無誤之后,你可以點擊 Close 按鈕,關閉掉這個倉庫,不允許再次上傳。如果關閉成功,你點擊刷新以后會發現,Release 按鈕亮起,點擊它即可發布。如果關閉失敗,你可以看看下方的界面,查找一下失敗原因,再次上傳代碼,關閉后發布。
當然我在 close 的時候遇到一個問題: No public key: Key with id: (XXXXX) was not able to be located (oss.sonatype.org) 出現這個問題的原因是 openGPG 的各種 key 服務同步需要花費時間,你在close 的時候還沒有同步過去。就會出現這個問題。那么如何解決:stackoverflow https://stackoverflow.com/questions/19462617/no-public-key-key-with-id-xxxxx-was-not-able-to-be-located-oss-sonatype-org
上圖就是我的解決過程,然后再 close ,再 release ,OK 這就將開源庫發布出去了。
7. 查找開源庫
注意開源庫發布出去之后,還是需要等待一段時間,才能在這里 https://search.maven.org/ 查找我們的開源庫,以及查看如何依賴自己的開源庫。我是下班第二天來看的,查收 email 也是有通知的
OpenGPG 這塊或者其他地方有問題的,歡迎來問。
---------------- 更新:2018/10/9
二、中央倉庫中庫版本升級
我們上傳的庫添加新功能或者修復了一些 bug 之后,需要更新時,我們要做的操作很簡單:
1. 更改版本號:eg. 1.0 to 1.1 更改完成之后,運行 uploadArchives 開始上傳新版本
2. 上傳完成之后,然后執行上述 原操作中的 6 操作,將新版本發布出去
3. release 之后,還是需要等待一段時間,然后查看我們的新版本:
新版本上傳成功,就可以使用了:
implementation 'io.github.meetsl:SCardView:1.1'
參考:
https://blog.csdn.net/c794904140/article/details/50159509
https://blog.csdn.net/kifile/article/details/42463489