標籤: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中央庫