關於《在AndroidStudio中,使用Gradle打包aar到JCenter倉庫!完整版教程!填補各種坑》更新驗證
七.在JCenterLib這個Module中新建一個檔案,名為bintray.gradle
內容為:
[javascript] view plain copy- apply plugin: 'com.github.dcendents.android-maven'
- apply plugin: 'com.jfrog.bintray'
- group = PROJ_GROUP
- version = PROJ_VERSION
- project.archivesBaseName = PROJ_ARTIFACTID
-
task sourcesJar(type: Jar) {
- from android.sourceSets.main.java.srcDirs
- classifier = 'sources'
- }
- task javadoc(type: Javadoc) {
- source = android.sourceSets.main.java.srcDirs
- classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
- }
-
task javadocJar(type: Jar, dependsOn: javadoc) {
- classifier = 'javadoc'
- from javadoc.destinationDir
- }
- artifacts {
- archives javadocJar
- archives sourcesJar
- }
- javadoc {
- options{
- encoding "UTF-8"
- charSet 'UTF-8'
- author true
- version true
-
links "http://docs.oracle.com/javase/7/docs/api"
- }
- }
- install {
- repositories.mavenInstaller {
- // This generates POM.xml with proper parameters
- pom.artifactId = PROJ_ARTIFACTID
- pom {
- project {
- description PROJ_DESCRIPTION
- packaging 'aar'
- name PROJ_NAME
- url PROJ_WEBSITEURL
- licenses {
- license {
- name LICENSE_NAME
- url LICENSE_URL
- }
- }
- developers {
- developer {
- id DEVELOPER_ID
- name DEVELOPER_NAME
- email DEVELOPER_EMAIL
- }
- }
- scm {
- connection PROJ_VCSURL
- developerConnection PROJ_VCSURL
- url PROJ_WEBSITEURL
- }
- }
- }
- }
- }
- Properties properties = new Properties()
- properties.load(project.rootProject.file('local.properties').newDataInputStream())
- bintray {
- user = properties.getProperty("bintray.user")
- key = properties.getProperty("bintray.apikey")
- configurations = ['published','archives']
- 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
- }
- }
*注:此檔案中規定了生成javadoc的編碼格式為utf-8,所以大家在使用各種IDE時為了避免各種亂碼問題,應在設定中將工作空間的編碼設定為統一採用utf-8編碼.
八.同樣在JCenterLib這個Module下新建一個名為gradle.properties的檔案
內容為:
[javascript] view plain copy- PROJ_GROUP=com.github.ls1110924.library
- PROJ_VERSION=1.0.0
- PROJ_NAME=JCenterLib
- PROJ_WEBSITEURL=https://github.com/ls1110924/JCenterDemo
- PROJ_ISSUETRACKERURL=https://github.com/ls1110924/JCenterDemo/issues
- PROJ_VCSURL=https://github.com/ls1110924/JCenterDemo.git
- PROJ_DESCRIPTION=A Test Lib
- PROJ_ARTIFACTID=JCenterLib
- LICENSE_NAME='The Apache Software License, Version 2.0'
- LICENSE_URL='http://www.apache.org/licenses/LICENSE-2.0.txt'
- DEVELOPER_ID=ls1110924
- DEVELOPER_NAME=A Shuai
- [email protected]
我先依次解釋一下每個條目的意義
PROJ_GROUP 為你上傳的構件的Group,如compile 'com.Android.support:appcompat-v7:22.2.0'中的com.android.support
PROJ_VERSION 為你此次上傳構件的版本號,如compile 'com.android.support:appcompat-v7:22.2.0'中的22.2.0,以後更新構件重新上傳的時候只需要修改這裡就好。
PROJ_NAME 為上傳到你bintray的maven倉庫的倉庫名,即他會在你的maven倉庫中新建一個子倉庫,並使用這個值作為倉庫名。
PROJ_WEBSITEURL 為你的工程網站的url,一般為你的Github專案地址,如https://github.com/ls1110924/LightUtils
PROJ_ISSUETRACKERURL 為你的工程issue的url,一般為https://github.com/ls1110924/LightUtils/issues
PROJ_VCSURL 為你的專案版本控制系統的url,一般為https://github.com/ls1110924/LightUtils.git,切不可忘記最後面的.git
PROJ_DESCRIPTION 為你的專案描述,大家隨意填寫
PROJ_ARTIFACTID 為你的構件ID,如如compile 'com.android.support:appcompat-v7:22.2.0'中的appcompat-v7
LICENSE_NAME和LICENSE_URL保持不變即可
DEVELOPER_ID為開發者ID,大家隨意填寫
DEVELOPER_NAME為開發者姓名,隨意填寫
DEVELOPER_EMAIL為開發者郵箱,最後填寫正確的郵箱,什麼郵箱都可以
*注意:這裡最好把構件ID的命名和你要打包上傳的Module同名,如若不喜歡Module名作為構件ID,下面教大家動態修改Module名,這裡必須同名是因為一會的上傳任務是預設使用Module名作為構件ID的,這裡宣告的構件名就沒有了效果。
這時咱們上傳的構件依賴就為 complile 'com.github.ls1110924.library:JCenterLib:1.0.0'
*這裡因為gradle.properties檔案是咱們個人的一些私人資訊配置,一般不會同步到Github的遠端倉庫上,這裡需要在JCenterLib這個Moduel的.gitignore檔案配置忽略上傳gradle.properties這個檔案
[javascript] view plain copy- /gradle.properties
九.有心的旁友可能已經注意到第七步中的user和key還沒有配置
其實這兩個值就是我們第二步中申請bintray的UserID和分配的APIKey
開啟專案根目錄下的local.properties檔案,這個檔案專案預設提供了忽略,所以可以把一些非常私人的資料放在這裡
[javascript] view plain copy- bintray.user=ls1110924
- bintray.apikey=xxxxxxxxxxxxxxxxxxxxx
十.Module改名
如果一些人不喜歡使用Module名作為PROJ_ARTIFACTID構件ID的使用者可以看這一步,無所謂的朋友可以跳過這一步
開啟專案根目錄的settings.gradle檔案,加一句
[javascript] view plain copy- def submoduleProject = project(':JCenterLib')
- submoduleProject.name = 'jcenter'
JCenterLib為我們原始的Module名,現在動態改為jcenter,修改後的setting.gradle檔案內容為
[javascript] view plain copy- include ':app', ':JCenterLib'
- def submoduleProject = project(':JCenterLib')
- submoduleProject.name = 'jcenter'
下的build.gradle檔案中的依賴,
從
[javascript] view plain copy- complile project(':JCenterLib')
修改為 [javascript] view plain copy
- compile project(':jcenter')
同時修改JCenterLib這個Module中gradle.properties中的
[javascript] view plain copy- PROJ_ARTIFACTID=jcenter