文章目錄
註冊賬號
登陸 https://bintray.com/ 網站註冊賬號,需要注意的是:
要選擇免費版註冊
,不要選擇企業版。郵箱不要選擇國內郵箱,國內郵箱註冊不了
,可以用Gmail 郵箱。- 建議直接使用第三方 Github 或 Google 賬號註冊。
另外,國內訪問 https://bintray.com/ 網站很慢,很有可能訪問不了。
Add New Repository(創建倉庫)
登錄賬號,在主頁選擇Add New Repository
:
打開新頁面後,填寫新建的倉庫信息:
上面菜單選項含義:
- Name:倉庫的名字
- Type:倉庫的類型,這裏必須選擇
maven
(在後面添加的依賴的插件就是上傳到maven倉庫) - Description:倉庫描述,可以不填寫
點擊 Create 按鈕,回到主頁會看到Add New Repository
下有你剛纔新建的倉庫。
Add to Package(創建包)
點擊上面新建的倉庫,進入倉庫主頁,選擇Add to Package
,然後填寫要上傳的項目信息:
上面菜單選項含義:
- Name:要上傳的項目的名字
- Description:要上傳的項目的描述
- Licensens:選擇 apache-2.0
- Website:項目 Github 地址
- Version Control:項目 git 地址
注意:這裏創建包填寫的信息就是要上傳的項目信息,所以慎重慎重。
API Key
選擇賬號 → Edit Your Profile → API Key:
API Key 用於賬號驗證,在上傳項目的時候需要用到,複製API Key 並保存下來。
上傳項目
上傳 library 和 plugin 的方式有些不同,這裏選擇了兩種方式,其實用第二種既能上傳Android library 或 Java library,也能上傳Android Plugin 或 Java Plugin。
上傳 Android library 或 Java library
添加依賴
首先,在項目 builde.gradle
文件中的buildscript
中添加:
buildscript {
repositories {
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' } //在國內可能下載不了相應文件,可以添加這個阿里雲倉庫地址,幫助下載
}
dependencies {
classpath 'com.novoda:bintray-release:0.9.1' //新添加插件,並保持最新版本
}
}
其次,在項目的gradle
文件夾下新建上傳配置文件名字.gradle
,這裏新建一個gradle-bintray-publish.gradle
文件,它的內容如下:
apply plugin: 'com.novoda.bintray-release' //添加插件
publish {
userOrg = USER_ORG //引用的是項目的 `gradle.properties` 文件中的環境變量,下面類似,後面會對 `gradle.properties` 文件做解釋
groupId = GROUP_ID
artifactId = ARTIFACT_ID
publishVersion = VERSION
desc = DESCRIPTION
website = WEBSITE
}
//構建 sources.jar 和 javadoc.jar 並上傳
if (project.getPlugins().hasPlugin('com.android.application') ||
project.getPlugins().hasPlugin('com.android.library')) {
task androidJavadocs(type: Javadoc) {
source = android.sourceSets.main.java.source
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
classifier = 'javadoc'
from androidJavadocs.destinationDir
}
task androidSourcesJar(type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.source
}
} else {
task sourcesJar(type: Jar, dependsOn:classes) {
classifier = 'sources'
from sourceSets.main.allSource
}
task javadocJar(type: Jar, dependsOn:javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
}
if (JavaVersion.current().isJava8Compatible()) {
allprojects {
tasks.withType(Javadoc) {
options.addStringOption('Xdoclint:none', '-quiet')
}
}
}
artifacts {
if (project.getPlugins().hasPlugin('com.android.application') ||
project.getPlugins().hasPlugin('com.android.library')) {
archives androidSourcesJar
archives androidJavadocsJar
} else {
archives sourcesJar
archives javadocJar
}
}
gradle/gradle-bintray-publish.gradle
文件可以上傳到 GitHub。
然後,在項目的 gradle.properties
文件中添加:
USER_ORG=wangjiang7747 //在 https://bintray.com/ 網站上中申請的賬號
GROUP_ID=com.wangjiang //類似 implementation 'com.android.support:appcompat-v7:28.0.0' 中的 com.android.support
ARTIFACT_ID=comment-doc //類似 implementation 'com.android.support:appcompat-v7:28.0.0' 中的 appcompat-v7
VERSION=0.0.3 //類似 implementation 'com.android.support:appcompat-v7:28.0.0' 中的 28.0.0
DESCRIPTION='this a tool that helps developer check the project\'s api easily by generating java and html document . moreover, it can standardize the java class comment.' //項目描述信息
LICENSE_APACHE=apache-2.0 //許可證
WEBSITE=https://github.com/wjrye/comment //項目 git 地址
gradle.properties
文件的作用:本地環境變量配置,存儲一些敏感數據,不用上傳到 GitHub。
最後,在要上傳的 Module 的build.gradle
中添加:
apply from: rootProject.file('gradle/gradle-bintray-publish.gradle')
開始上傳
運行命令:
./gradlew clean build bintrayUpload -PbintrayUser=BINTRAY_USERNAME -PbintrayKey=BINTRAY_KEY -PdryRun=false
BINTRAY_USERNAME
和 BINTRAY_KEY
就是在https://bintray.com/網站上申請的賬號和 API Key。
運行命令結束後,到https://bintray.com/ 網站查看是否上傳成功。
上傳Android Plugin 或 Java Plugin
添加依賴
首先,在項目的 builde.gradle
文件中的buildscript
中添加:
buildscript {
repositories {
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' } //在國內可能下載不了相應文件,可以添加這個阿里雲倉庫地址,幫助下載
}
dependencies {
classpath "com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4" //新添加插件,並保持最新版本
}
}
同樣,在項目的gradle
文件夾下新建上傳配置文件名字.gradle
,這裏新建一個gradle-bintray-publish.gradle
文件,它的內容如下:
apply plugin: 'com.jfrog.bintray'
apply plugin: 'maven-publish'
publishing {
publications {
MyPublication(MavenPublication) {
from components.java
groupId GROUP_ID
artifactId ARTIFACT_ID
version VERSION
}
}
}
group = GROUP_ID
version = VERSION
bintray {
user = BINTRAY_USER // bintray賬號,需要在`gradle.properties` 文件添加環境變量配置
key = BINTRAY_API_KEY // bintray API Key,需要在`gradle.properties` 文件添加環境變量配置
configurations = ['archives']
publications = ['MyPublication'] //就是上面 "publishing {publications {" 下的 “MyPublication”
pkg {
repo = 'maven' // bintray 倉庫地址
name = ARTIFACT_ID
userOrg = USER_ORG
licenses = ['Apache-2.0']
vcsUrl = VCS_URL
labels = ['Android'] // 插件標籤
publicDownloadNumbers = true
publish = true
version {
name = VERSION
desc = DESCRIPTION
vcsTag = VERSION
attributes = ['gradle-plugin': 'com.wangjiang:check-file-plugin'] //'com.wangjiang:check-file-plugin 就是classpath 配置的內容
}
}
}
//構建 sources.jar 和 javadoc.jar 並上傳
if (project.getPlugins().hasPlugin('com.android.application') ||
project.getPlugins().hasPlugin('com.android.library')) {
task androidJavadocs(type: Javadoc) {
source = android.sourceSets.main.java.source
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
classifier = 'javadoc'
from androidJavadocs.destinationDir
}
task androidSourcesJar(type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.source
}
} else {
task sourcesJar(type: Jar, dependsOn:classes) {
classifier = 'sources'
from sourceSets.main.allSource
}
task javadocJar(type: Jar, dependsOn:javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
}
if (JavaVersion.current().isJava8Compatible()) {
allprojects {
tasks.withType(Javadoc) {
options.addStringOption('Xdoclint:none', '-quiet')
}
}
}
artifacts {
if (project.getPlugins().hasPlugin('com.android.application') ||
project.getPlugins().hasPlugin('com.android.library')) {
archives androidSourcesJar
archives androidJavadocsJar
} else {
archives sourcesJar
archives javadocJar
}
}
gradle/gradle-bintray-publish.gradle
文件可以上傳到 GitHub。
同樣,在項目的 gradle.properties
文件中添加:
USER_ORG=wangjiang7747
GROUP_ID=com.wangjiang
ARTIFACT_ID=插件名字
VERSION=版本號
DESCRIPTION=這是項目描述信息
LICENSE_APACHE=許可證
WEBSITE=項目 Github 地址
VCS_URL=項目 git 地址
BINTRAY_USER=bintray 賬號
BINTRAY_API_KEY=bintray API Key
最後,同樣在要上傳的 Module 的build.gradle
中添加:
apply from: rootProject.file('gradle/gradle-bintray-publish.gradle')
開始上傳
運行命令:
./gradlew clean build bintrayUpload
運行命令結束後,到https://bintray.com/網站查看是否上傳成功。
上傳項目後的一些操作
是否可以正常下載
進入倉庫主頁,再進入包主頁,查看菜單Files下是否有你上傳的文件。
倉庫地址:
右上角的地址:https://dl.bintray.com/wangjiang7747/maven
就是你的倉庫地址。
將倉庫地址添加到本地項目中,查看是否能正常下載。
buildscript {
repositories {
maven { url '你的倉庫地址' }
}
dependencies {
}
}
刪除文件
如果想刪除新建的包或不再使用的包,可以點擊對應包右邊的 Edit 按鈕:
然後,在Edit Package 右邊點擊 Delete 按鈕就可以刪除了:
如果想刪除上傳的文件,可以點擊對應文件右邊的 Delete 按鈕:
發佈到Jcenter
當確定項目沒有問題後,就可以將項目發佈到jcenter。
選擇對應包主頁右上角菜單 Actions → Add to Jcenter:
發佈後會收到郵件,等待審覈通過。通過之後,就可以直接通過jcenter下載了。直接在Module 中添加依賴:
implementation 'group:name:version'
參考
- 張鴻洋博客:Android 快速發佈開源項目到jcenter
- bintray官方文檔:gradle-bintray-plugin
- JakeWharton 的 butterknife 項目的上傳配置文件