使用Android Studio將開源庫發布到Jcenter中央庫

來源:互聯網
上載者:User

標籤:repositories   android   jcenter   maven   github   

首先在 https://bintray.com 註冊一個帳號,登入後然後從其後台獲得一個API Key

在你的項目根目錄下的build.gradle檔案中加入依賴,最後檔案內容就變成了這樣子。

buildscript {    repositories {        jcenter()    }    dependencies {        classpath ‘com.android.tools.build:gradle:1.2.3‘        classpath ‘com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0‘        classpath ‘com.github.dcendents:android-maven-plugin:1.2‘    }}allprojects {    repositories {        jcenter()    }}

在根目錄下建立一個gradle檔案,將其命名為bintray.gradle,其內容如下

group = PROJ_GROUPversion = PROJ_VERSIONproject.archivesBaseName = PROJ_ARTIFACTIDapply plugin: ‘com.jfrog.bintray‘apply plugin: ‘maven-publish‘task sourcesJar(type: Jar) {    from android.sourceSets.main.java.srcDirs    classifier = ‘sources‘}task javadoc(type: Javadoc) {    source = android.sourceSets.main.java.srcDirs    classpath += configurations.compile    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))}task javadocJar(type: Jar, dependsOn: javadoc) {    classifier = ‘javadoc‘    from javadoc.destinationDir}javadoc {    options{        encoding "UTF-8"        charSet ‘UTF-8‘        author true        version true        links "http://docs.oracle.com/javase/7/docs/api"        title PROJ_ARTIFACTID    }}artifacts {    archives javadocJar    archives sourcesJar}def pomConfig = {    licenses {        license {            name "The Apache Software License, Version 2.0"            url "http://www.apache.org/licenses/LICENSE-2.0.txt"            distribution "repo"        }    }    developers {        developer {            id DEVELOPER_ID            name DEVELOPER_NAME            email DEVELOPER_EMAIL        }    }    //這裡有引號,並且有個空格,否則產生不了依賴,主要是這裡的dependencies並不是build.gradle裡的dependencies,而gradle會把他當成自身的dependencies處理    "dependencies " {        dependency{            groupId "com.alibaba"            artifactId "fastjson"            "version " "1.2.6"            //同dependencies        }    }}publishing {    publications {        mavenJava(MavenPublication) {            artifactId PROJ_ARTIFACTID            pom{                packaging ‘aar‘            }            pom.withXml {                def root = asNode()                root.appendNode(‘description‘, PROJ_DESCRIPTION)                root.children().last() + pomConfig            }        }    }}bintray {    Properties properties = new Properties()    properties.load(project.rootProject.file(‘local.properties‘).newDataInputStream())    user = properties.getProperty(‘BINTRAY_USER‘);    key = properties.getProperty(‘BINTRAY_KEY‘);    configurations = [‘archives‘]    publications = [‘mavenJava‘]    publish = true    pkg {        repo = ‘maven‘        name = PROJ_NAME        desc = PROJ_DESCRIPTION        websiteUrl = PROJ_WEBSITEURL        issueTrackerUrl = PROJ_ISSUETRACKERURL        vcsUrl = PROJ_VCSURL        licenses = [‘Apache-2.0‘]        publicDownloadNumbers = true    }}

需要注意的是如果你的項目依賴了第三方庫,則你也需要加入,比如這裡我引用了fastjson,在對應的位置加入依賴代碼即可,就像下面這樣子,唯一需要注意的就是dependencies 和version 需要用引號擴住,並且後面留一個空格,原因是因為這兩個關鍵字預設會有動作執行,這裡投機取巧的將問題解決

"dependencies " {    dependency{        groupId "com.alibaba"        artifactId "fastjson"        "version " "1.2.6"    }}

然後在你的庫module下的build.gradle的最後面加入應用該檔案的代碼,注意這裡的build.gradle是module下的而並非根目錄下的。

apply from: ‘../bintray.gradle‘

最後,將對應的變數進行配置即可。在根目錄下的gradle.properties檔案中加入屬性,屬性中使用

compile ‘com.android.support:appcompat-v7:22.2.0’

做範例

PROJ_GROUP=這裡改成groupId,比如com.android.supportPROJ_VERSION=這裡改成庫版本,比如22.2.0PROJ_NAME=這裡改成庫名字,比如appcompatPROJ_WEBSITEURL=這裡改成github地址,比如https://github.com/android/appcompatPROJ_ISSUETRACKERURL=這裡改成issue地址,比如https://github.com/android/appcompat/issuesPROJ_VCSURL=這裡改成版本控制地主,比如https://github.com/android/appcompat.gitPROJ_DESCRIPTION=這裡改成庫的描述資訊PROJ_ARTIFACTID=這裡改成庫的標示,比如appcompat-v7DEVELOPER_ID=這裡改成開發人員id,比如DEVELOPER_NAME=這裡改成開發人員名字,比如androidDEVELOPER_EMAIL=這裡改成開發人員郵箱,比如[email protected]

然後在項目根目錄下local.properties中增加兩個重要屬性,一個是之前註冊的帳號,一個是帳號背景api key,這個檔案不要加入版本控制,存在本地即可。

BINTRAY_KEY=你的API KEYBINTRAY_USER=你的使用者名稱

之後使用android studio進行gradle的task 構建,添加了上面的內容後,你的gradle會多出好幾個task。點擊android studio右側的gradle

在你的庫檔案展開後會有一個publishing/bintaryUpload的task,雙擊執行它,如果沒有錯誤,就可以在你的後台發現已經上傳了。這裡避免出錯,在執行這個task之前,首先執行三個task產生必須的檔案,即other中的javadocJar和sourcesJar以及publishing中的generatePomFileForMavenJavaPublication,目的是產生javadoc.jar,sources.jar以及pom.xml檔案,確保build successful後再執行publishing下的bintrayUpload的task,這樣就上傳到你的後台了。

點擊你上傳的包,進入管理頁面

點擊右下角的add to jcenter,直接提交進行審核。這裡我已經通過審核了,所以顯示的是link to等資訊。審核通過後,你就可以直接在gradle中引用了,就拿我這個項目來說就是

compile "cn.edu.zafu:corepage:0.0.1"

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

使用Android Studio將開源庫發布到Jcenter中央庫

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.