使用gradle上傳項目到jcenter


想不想把自己的庫也上傳到jcenter,然后只需要一名話
compile com.zzb.library:android-common:0.1.0  //(compile group_id:artifact_id:version)
就可以引用你的庫? 按着下面的教程一步一步來就可以了

 

1.到https://bintray.com/注冊一個賬號

2.AndroidStudio創建一個項目,然后再在這個項目里創建一個library(File->New->New Module->Android Library)

3.打開項目根目錄的gradle.properties文件,復制下面的內容,替換相應字段的值

VERSION_NAME=0.1.0
GROUP=com.zzb.library
POM_NAME=jcenter test
POM_ARTIFACT_ID=common
POM_PACKAGING=aar
#比如我們引用appcompat-v7,那么會這么寫 compile 'com.android.support:appcompat-v7:22.2.0'
#實際對應的字段就是 compile 'GROUP:POM_ARTIFACT_ID:VERSION_NAME'

POM_DESCRIPTION=項目描述
#項目地址等,我這使用的是github的項目地址
POM_URL=https://github.com/BaronZ/android-common-library
POM_SCM_URL=https://github.com/BaronZ/android-common-library
POM_SCM_CONNECTION=scm:git:git://github.com/BaronZ/android-common-library.git
POM_SCM_DEV_CONNECTION=scm:git:ssh://git@github.com/BaronZ/android-common-library.git

#開源協議
POM_LICENCE_NAME=The Apache Software License, Version 2.0
POM_LICENCE_URL=http://www.apache.org/licenses/LICENSE-2.0.txt
POM_LICENCE_DIST=repo

POM_DEVELOPER_ID=zzb
POM_DEVELOPER_NAME=ZZB

POM_DEVELOPER_EMAIL=realbo89@outlook.com
POM_DEVELOPER_URL=http://baronz.github.io

GIT_URL=https://github.com/BaronZ/android-common-library.git
ISSUE_URL=https://github.com/BaronZ/android-common-library/issues
View Code

 

4.項目目錄下build.gradle,dependencies添加引用

dependencies {
        classpath 'com.android.tools.build:gradle:1.2.3'
        classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2'
    }
View Code

 注,如果不自己寫gradle腳本,可跳過步驟5和6

5.項目目錄下gradle目錄添加文件gradle-jcenter-push.gradle,內容如下

apply plugin: 'maven-publish'
apply plugin: 'com.jfrog.bintray'

publishing {
    publications {
        mavenJava(MavenPublication) {
            groupId GROUP
            version VERSION_NAME
            artifactId POM_ARTIFACT_ID
            artifact "${project.buildDir}/outputs/aar/${project.name}-release.aar"
            artifact androidJavadocsJar
            artifact androidSourcesJar

            pom.withXml {
                Node root = asNode()
                root.appendNode('name', POM_ARTIFACT_ID)
                root.appendNode('description', POM_DESCRIPTION)
                root.appendNode('url', POM_URL)

                def issues = root.appendNode('issueManagement')
                issues.appendNode('system', 'github')
                issues.appendNode('url', ISSUE_URL)

                def scm = root.appendNode('scm')
                scm.appendNode('url', POM_SCM_URL)
                scm.appendNode('connection', POM_SCM_CONNECTION)
                scm.appendNode('developerConnection', POM_SCM_DEV_CONNECTION)

                def license = root.appendNode('licenses').appendNode('license')
                license.appendNode('name', POM_LICENCE_NAME)
                license.appendNode('url', POM_LICENCE_URL)
                license.appendNode('distribution', POM_LICENCE_DIST)
            }
        }
    }
}

def getBintrayUserProperty() {
    return hasProperty('BINTRAY_USER') ? BINTRAY_USER : ""
}

def getBintrayApiKeyProperty() {
    return hasProperty('BINTRAY_APIKEY') ? BINTRAY_APIKEY : ""
}

// gradle bintrayUpload
bintray {
    user = getBintrayUserProperty()
    key = getBintrayApiKeyProperty()
    publications = ['mavenJava']

    dryRun = false
    publish = true
    pkg {
        repo = 'maven'
        name = POM_ARTIFACT_ID
        desc = POM_NAME
        websiteUrl = POM_URL
        issueTrackerUrl = ISSUE_URL
        vcsUrl = GIT_URL
        licenses = ['Apache-2.0']
        labels = ['android', 'aar']
        publicDownloadNumbers = true

        version {
            name = VERSION_NAME
            vcsTag = VERSION_NAME
        }
    }
}
View Code

 6.項目目錄下gradle目錄添加文件android-artifacts.gradle,內容如下

task androidJavadocs(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
    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.sourceFiles
}
View Code

 7.在library目錄下的build.gradle底部添加下面兩行腳本

如果是執行了5和6,用下面腳本

apply from: rootProject.file('gradle/android-artifacts.gradle')
apply from: rootProject.file('gradle/gradle-jcenter-push.gradle')
View Code

如果沒有5和6,用下面腳本

apply from: 'https://raw.githubusercontent.com/BaronZ/android-common/master/gradle/android-artifacts.gradle'
apply from: 'https://raw.githubusercontent.com/BaronZ/android-common/master/gradle/gradle-jcenter-push.gradle'
View Code

 

 

8.登錄bintray.com創建maven庫

  • 點擊maven
  • 點擊Add New Package
  • 填入相應的信息,再點Create Package即可
  • 回到bintray主頁,點擊edit
  • 點擊API Key
  • 點擊show,記下你的API Key,等下要用

9.找到你home目錄下的gradle.properties(windows下目錄是C:\Users\你的電腦名稱\.gradle),添加下面兩行腳本

BINTRAY_USER=你的bintray.com的用戶名
BINTRAY_APIKEY=上面一步讓你記下的API Key
View Code

10.好了,敲下面命令,坐等上傳成功,cmd->進入你的項目目錄(注,執行下面的命令,請確保設置好環境變量,path里面有gradle/bin,有JAVA_HOME環境變量)

gradle clean build bintrayUpload

 如果看到執行結果如下,那么恭喜你,還差一步

如果在生成Javadoc的時候遇到'編碼GBK的不 可映射字符'錯誤,打開gradle/android-artifacts.gradle

添加下面代碼到androidJavadocs這個任務里面

allprojects {
        tasks.withType(Javadoc) {
            options.encoding = "UTF-8"
        }
}
View Code

即完整腳本如下

task androidJavadocs(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
    allprojects {
        tasks.withType(Javadoc) {
            options.encoding = "UTF-8"
        }
    }
}
View Code

 11.還需要點add to jcenter,坐等審核通過

 

12.幾個小時后,當你看到下面的截圖,恭喜你,可以引用的你庫了

13.下面一句話,引用你的庫,大功告成

compile com.zzb.library:android-common:0.1.0

 

14.升級

確保global/gradle.properties里的BINTRAY_USER是正確的

修改library/gradle.properties的VERSION_NAME即可

 命令:gradle clean build bintrayUpload


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM