Android 上傳項目到Jcenter

註冊賬號

登陸 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_USERNAMEBINTRAY_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'

參考

  1. 張鴻洋博客:Android 快速發佈開源項目到jcenter
  2. bintray官方文檔:gradle-bintray-plugin
  3. JakeWharton 的 butterknife 項目的上傳配置文件
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章