前言
發(fā)布項目的定義。發(fā)布項目到遠程JCenter倉庫,準確的說是發(fā)布項目構(gòu)件到JCenter倉庫,用英語說是Publishing artifacts to the JCenter。本文所說的發(fā)布項目都是指發(fā)布項目構(gòu)建后的生成物,即構(gòu)件(Artifacts)。
簡介。JCenter是JFrog公司旗下Bintray平臺上一個公開的Java倉庫。要發(fā)布項目到JCenter,首先需要發(fā)布項目到Bintray平臺,然后才能發(fā)布到它的公開庫——JCenter。
- Bintray官網(wǎng): https://bintray.com/
- JCenter倉庫地址:https://jcenter.bintray.com/
Bintray平臺上可以托管多種類型的庫,如比較流行的Maven和npm。
本文寫作目的。本文目的是介紹如何上傳Android Library項目構(gòu)件到Bintray Maven庫,并最終發(fā)布到JCenter這一整個流程。其實關(guān)于發(fā)布項目到JCenter這方面的介紹,網(wǎng)上已經(jīng)有許多文章了,官網(wǎng)也有用戶指南,那為什么我還有寫這篇文章呢?
- 博客介紹不全。一般博客只是介紹如何使用Gradle插件如gradle-bintray-plugin等上傳項目Artifacts,但參數(shù)為什么要那樣配置?上傳失敗如何定位問題?等等都沒有介紹。如果不使用插件,又該如何做?
- 官方用戶指南較凌亂。
源碼地址。本文涉及到的nicelogger項目Github地址:https://github.com/zhangliangnbu/nice-logger
Maven相關(guān)
詳細介紹請見Apach Maven。簡單講,Maven就是項目構(gòu)建和管理的工具,Maven倉庫就是利用Maven來管理項目的倉庫。
Maven倉庫文件規(guī)范
上傳文件到Maven倉庫有一定的規(guī)范。
對于Android項目,必須上傳的文件包括:
-
.aar文件。Android構(gòu)件特有文件,類似于.jar文件,但包含一些資源文件。 -
.pom文件。Maven倉庫中必須有的文件,XML格式,包含項目的所有信息,詳情請見POM Reference。
有些Maven倉庫審核比較嚴格,需要上傳另外的兩個文件:
-
-sources.jar文件。Java源碼文件。 -
-javadoc.jar文件。Java文檔文件。
POM文件
有四個必填的參數(shù),以著名的OkHttp項目作為示例進行說明如下:
-
modelVersion。POM版本,一般都寫4.0.0,支持Maven 2和3。 -
groupId。項目所在的項目組標識,如OkHttp所在的項目組標識是com.squareup.okhttp3。 -
artifactId。項目的標識,如okhttp。 -
version。項目當前版本號,如OkHttp項目的3.12.0。
另外還有一個參數(shù)packaging,對于Android項目來一般不能缺少,它表示打包方式,默認是jar,Android項目一般為aar。
我們用Gradle解析依賴的時候,會這樣寫:
implementation 'com.squareup.okhttp3:okhttp:3.12.0',其中com.squareup.okhttp3就是當前依賴的groupId,okhttp是依賴的artifactId,3.12.0是當前要解析的版本version。注意:
groupId、artifactId和version都是非常重要的參數(shù),在上傳文件之前必須先定義好,在之后的過程中會用到。
Android項目基本POM文件如下:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.12.0</version>
<packaging>aar</packaging>
</project>
文件名統(tǒng)一
發(fā)布到JCenter里的四個文件名稱必須統(tǒng)一如下:
{artifactId}-{version}.aar{artifactId}-{version}-sources.jar{artifactId}-{version}-javadoc.jar{artifactId}-{version}.pom
用戶手冊
見JFrog用戶指南。里面詳細介紹各種概念、使用、操作等。瀏覽一遍即可,有許多是用不上的。主要章節(jié)如下:
- 了解核心概念:倉庫、包和版本。見章節(jié):Key Concepts。
- 了解發(fā)布的三個步驟:創(chuàng)建版本、上傳、發(fā)布。見章節(jié):Uploading、Uploads
- 了解上傳的方法:UI手動、cURL、Maven、Gradle。見章節(jié):Maven Repositories
任何個人博客和文章都不能代替官方用戶手冊,這是必須要讀的,它應(yīng)當是一切非官方文檔的參考。
發(fā)布流程
一般發(fā)布流程如下:
- 準備工作。定義參數(shù);準備本地待發(fā)布項目;配置Bintray平臺賬號、倉庫、Package、版本。
- 生成構(gòu)件文件。本地生成待發(fā)布的構(gòu)件文件(包括POM文件)。
- 發(fā)布到Bintray。上傳和發(fā)布本地構(gòu)件文件到Bintray平臺。
- 發(fā)布到JCenter。發(fā)布Bintray平臺上的項目到JCenter。
發(fā)布方式
發(fā)布項目到JCenter有許多方式:
- UI手動上傳。通過Bintray網(wǎng)站UI,手動上傳項目構(gòu)件文件。
- cURL上傳。通過cURL調(diào)用REST API接口上傳。
- Maven上傳。使用Maven客戶端上傳項目構(gòu)件文件到Bintray平臺的maven倉庫。
- Gradle插件上傳。通gradle-bintray-plugin和bintray-release等Gradle插件上傳。
不同的方式會導(dǎo)致發(fā)布流程略微有所不同,有些操作可以合并在一起。比如Gradle插件上傳方式中,創(chuàng)建pacakge、版本、創(chuàng)建構(gòu)件文件和上傳操作可以一起執(zhí)行。
準備工作說明
主要描述定義參數(shù)、準備本地項目和配置Bintray平臺這三步操作。
定義參數(shù)
- Bintray平臺倉庫名稱。你要發(fā)布到哪個倉庫,當然要知道它的名稱了。我這里是
android。 - Bintray平臺Package名稱。沒有規(guī)定,我這里取為
nicelogger。 - POM文件
groupId。沒有規(guī)定,一般為xxx.xxx.xxx,我這里取com.liang.android。 - POM文件
artifactId。沒有規(guī)定,我這里取nicelogger。 - POM文件
version。版本號,我這里取0.0.1,作為第一個版本。
注意:Bintray平臺Package名稱和POM文件
artifactId不必取相同的名稱,可以不一致。為了方便說明和記憶,我取為一致。
準備項目
可以創(chuàng)建一個然后發(fā)布到GitHub或者從GitHub fork一個。為了描述方便工程名稱為NiceLoggerDemo, Library Module名稱為nicelogger。
項目的GitHub地址在之后的配置中,需要用到。
配置Bintray平臺
- 創(chuàng)建賬戶。如果已經(jīng)有賬戶了,就不用創(chuàng)建。在Bintray官網(wǎng)注冊賬號,參考官網(wǎng)指南-Creating an Account。
- 創(chuàng)建Maven庫。如果已經(jīng)創(chuàng)建過Maven倉庫,可以不用創(chuàng)建。進入個人中心主頁,點擊“Add New Repository”,進入填寫倉庫信息頁。填寫信息:“Name”,看其他博客許多人寫了“maven”,我寫了“android”,表示是一個用于存儲Android項目的Maven倉庫,這個名字需要記住,以后使用Gradle插件上傳項目的時候用得著?!癟ype”選擇“Maven”。其他選填。點擊“Create”就可以創(chuàng)建一個Maven倉庫了。
- 創(chuàng)建Package。用Gradle插件方式時可以不用手動創(chuàng)建。進入Maven倉庫,點擊“Add New Package”,進入倉庫信息填寫頁。信息填寫:“Name”填之前規(guī)定的
nicelogger,“Version control”填你上傳到Github上的項目地址,其他選填。點擊“Create Package”即可。 - 創(chuàng)建版本。用Gradle插件方式時可以不用手動創(chuàng)建。從Package頁面進入“Create New Version”頁面,“Name”填寫定義好的
0.0.1,其他選填,點擊“Create Version”即可。
準備工作做好后,接下來就可以通過不同的方式進行后續(xù)操作了。
參考
- JCenter是什么
- Bintray官網(wǎng)
- JCenter倉庫
- JFrog用戶指南
- Apach Maven
- bintray-release
- 使用Gradle插件上傳Artifacts到Bintrary
- 使用Gradle插件上傳示例
- 博客-上傳Gradle項目到Maven倉庫
- 從Travis到Bintray
注:文章首發(fā)簡書和我的個人博客永恒的碼流。
個人博客會持續(xù)更新,但由于精力有限,其他平臺不能保證會更新。為了讀到最新版本的文章,建議讀我的個人博客。