
为便于和大家交流,最近想把自己开发的一个下载库传到maven,网上搜了不少发布教程,也试着去做了,结果过程总是不尽如人意,后来终于找到了一个详尽完整的发布教程(英文版),小编按照此教程很快便把自己的library传到maven使用了,现在分享给大家。
1)不用多说,你需要有一个待发布的library项目和有个bintray账号
2)打开个人中心,选择API key,并保存这个key值,后面会用到
3)在项目的build.gradle文件中,加上Bintray Plugin和Maven Plugin,
- classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2'
- classpath "com.github.dcendents:android-maven-gradle-plugin:1.3"
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2'
classpath "com.github.dcendents:android-maven-gradle-plugin:1.3"
4)打开library项目的build.gradle文件,在上面加上如下支持:
- apply plugin: 'com.jfrog.bintray'
- apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'
apply plugin: 'com.github.dcendents.android-maven'
5)指定POM内容(Bintray plugin在上传库时会检查POM文件的内容,虽然Maven plugin会帮你生成文件,但仍需有你指定groupId和version)
- group = 'com.github.hathibelagal.librarytutorial'// library库包名
- version = '1.0.1'// 版本号
group = 'com.github.hathibelagal.librarytutorial'// library库包名
version = '1.0.1'// 版本号
(另外,如果你不指定artifactId,maven默认会将library库的名字作为artifactId使用)
6)生成Sources Jar文件,并强制设定源码位置
- task generateSourcesJar(type: Jar) {
- from android.sourceSets.main.java.srcDirs
- classifier'sources'
- }
task generateSourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier'sources'
}
7)生成Jar文档,并强制设定位置
- task generateJavadocs(type: Javadoc) {
- source = android.sourceSets.main.java.srcDirs
- classpath += project.files(android.getBootClasspath()
- .join(File.pathSeparator)) //使用android.getBootClasspath关联Android SDK类文件
- }
task generateJavadocs(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath()
.join(File.pathSeparator)) //使用android.getBootClasspath关联Android SDK类文件
}
根据上面的文档生成文档文件
- task generateJavadocsJar(type: Jar) {
- from generateJavadocs.destinationDir
- classifier'javadoc'
- }
task generateJavadocsJar(type: Jar) {
from generateJavadocs.destinationDir
classifier'javadoc'
}
为了保证generateJavadocsJar在generateJavadocs完成时开始,还需要加上如下依赖片段
- generateJavadocsJar.dependsOn generateJavadocs
generateJavadocsJar.dependsOn generateJavadocs
8)将以上生成的jar文件包含在artifacts里面,即放在要上传到maven的文件列表中
- artifacts {
- archives generateJavadocsJar //原文为generateJavaDocsJar,此处已做矫正,要严格显示大小写
- archives generateSourcesJar
- }
artifacts {
archives generateJavadocsJar //原文为generateJavaDocsJar,此处已做矫正,要严格显示大小写
archives generateSourcesJar
}
9)打开右侧gradle窗口,找到library项目中的install,双击运行这个task,任务完成时,将会生成所有需要发布的文件,POM、AAR、sources JAR和一个Javedocs JAR文件
10)准备好所有的资源文件后,接下来就是配置包的详细参数,开始上传了(配置和上传完成后,bintray会自动在后台生成相应的仓库),示例:
- bintray {
- user ='Bintray账户名' //在个人中心的路径里可以找到
- key ='01234567890abcdef01234567890abcdef' //上述保存的API key
- pkg {
- repo ='maven' //必须设定一个值,这里选择maven
- name ='com.github.hathibelagal.mylittlelibrary' //必须,包名
- version {
- name ='1.0.1-tuts' //版本名称
- desc ='My test upload' //版本描述
- released =new Date() //上传过程中如果此处报错,可以注释掉此句
- vcsTag ='1.0.1' //版本
- }
- licenses = ['Apache-2.0'] //开源协议
- vcsUrl ='https://github.com/hathibelagal/LibraryTutorial.git' //指定项目git地址
- websiteUrl ='https://github.com/hathibelagal/LibraryTutorial' //项目官网地址
- }
- configurations = ['archives'] //必须为archives
- }
bintray {
user ='Bintray账户名' //在个人中心的路径里可以找到
key ='01234567890abcdef01234567890abcdef' //上述保存的API key
pkg {
repo ='maven' //必须设定一个值,这里选择maven
name ='com.github.hathibelagal.mylittlelibrary' //必须,包名
version {
name ='1.0.1-tuts' //版本名称
desc ='My test upload' //版本描述
released =new Date() //上传过程中如果此处报错,可以注释掉此句
vcsTag ='1.0.1' //版本
}
licenses = ['Apache-2.0'] //开源协议
vcsUrl ='https://github.com/hathibelagal/LibraryTutorial.git' //指定项目git地址
websiteUrl ='https://github.com/hathibelagal/LibraryTutorial' //项目官网地址
}
configurations = ['archives'] //必须为archives
}
使用Bintray plugin上传上面生成的资源文件到仓库,即发布应用。点击右侧gradle窗口,找到library->publishing->bintrayUpload,并双击此task,开始上传。
11)上传完成后,会在在后台看到新的仓库,如想让别人能通过compile应用,还需要点击Publish链接,正式发布。
使用上传的仓库方法:
- repositories {
- maven {
- url 'https://dl.bintray.com/eruzza/maven' //指定自己的maven路径,在未将library加入的jcenter中前,这是必须的
- }
- }
- dependencies {
- compile 'com.github.hathibelagal.librarytutorial:mylittlelibrary:1.0.1@aar'
- }
repositories {
maven {
url 'https://dl.bintray.com/eruzza/maven' //指定自己的maven路径,在未将library加入的jcenter中前,这是必须的
}
}
dependencies {
compile 'com.github.hathibelagal.librarytutorial:mylittlelibrary:1.0.1@aar'
}
如果想让library项目在jcenter中被检索到,可以在Bintray对应的项目详情页中,点击 Add to JCenter,在下一页填写一些commit信息后点击send,即可在1-2天左右后在JCenter repository中看到自己的项目。
配置全图:
- apply plugin: 'com.android.application'
- apply plugin: 'com.jfrog.bintray'
- apply plugin: 'com.github.dcendents.android-maven'
- android {
- compileSdkVersion 23
- buildToolsVersion "23.0.2"
- defaultConfig {
- applicationId "simen.crashlogsample"
- minSdkVersion 15
- targetSdkVersion 23
- versionCode 1
- versionName "1.0"
- }
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- }
- }
- }
- dependencies {
- compile fileTree(dir: 'libs', include: ['*.jar'])
- compile project(':crashlog')
- }
- group = 'com.github.hathibelagal.librarytutorial'// library库包名
- version = '1.0.1'// 版本号
- task generateSourcesJar(type: Jar) {
- from android.sourceSets.main.java.srcDirs
- classifier'sources'
- }
- task generateJavadocs(type: Javadoc) {
- source = android.sourceSets.main.java.srcDirs
- classpath += project.files(android.getBootClasspath()
- .join(File.pathSeparator)) //使用android.getBootClasspath关联Android SDK类文件
- }
- task generateJavadocsJar(type: Jar) {
- from generateJavadocs.destinationDir
- classifier'javadoc'
- }
- generateJavadocsJar.dependsOn generateJavadocs
- artifacts {
- archives generateJavadocsJar //原文为generateJavaDocsJar,此处已做矫正,要严格显示大小写
- archives generateSourcesJar
- }
- bintray {
- user ='Bintray账户名' //在个人中心的路径里可以找到
- key ='01234567890abcdef01234567890abcdef' //上述保存的API key
- pkg {
- repo ='maven' //必须设定一个值,这里选择maven
- name ='com.github.hathibelagal.mylittlelibrary' //必须,包名
- version {
- name ='1.0.1-tuts' //版本名称
- desc ='My test upload' //版本描述
- released =new Date() //上传过程中如果此处报错,可以注释掉此句
- vcsTag ='1.0.1' //版本
- }
- licenses = ['Apache-2.0'] //开源协议
- vcsUrl ='https://github.com/hathibelagal/LibraryTutorial.git' //指定项目git地址
- websiteUrl ='https://github.com/hathibelagal/LibraryTutorial' //项目官网地址
- }
- configurations = ['archives'] //必须为archives
- }
apply plugin: 'com.android.application'
apply plugin: 'com.jfrog.bintray'
apply plugin: 'com.github.dcendents.android-maven'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "simen.crashlogsample"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(':crashlog')
}
group = 'com.github.hathibelagal.librarytutorial'// library库包名
version = '1.0.1'// 版本号
task generateSourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier'sources'
}
task generateJavadocs(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath()
.join(File.pathSeparator)) //使用android.getBootClasspath关联Android SDK类文件
}
task generateJavadocsJar(type: Jar) {
from generateJavadocs.destinationDir
classifier'javadoc'
}
generateJavadocsJar.dependsOn generateJavadocs
artifacts {
archives generateJavadocsJar //原文为generateJavaDocsJar,此处已做矫正,要严格显示大小写
archives generateSourcesJar
}
bintray {
user ='Bintray账户名' //在个人中心的路径里可以找到
key ='01234567890abcdef01234567890abcdef' //上述保存的API key
pkg {
repo ='maven' //必须设定一个值,这里选择maven
name ='com.github.hathibelagal.mylittlelibrary' //必须,包名
version {
name ='1.0.1-tuts' //版本名称
desc ='My test upload' //版本描述
released =new Date() //上传过程中如果此处报错,可以注释掉此句
vcsTag ='1.0.1' //版本
}
licenses = ['Apache-2.0'] //开源协议
vcsUrl ='https://github.com/hathibelagal/LibraryTutorial.git' //指定项目git地址
websiteUrl ='https://github.com/hathibelagal/LibraryTutorial' //项目官网地址
}
configurations = ['archives'] //必须为archives
}
英语原文地址:http://code.tutsplus.com/tutorials/creating-and-publishing-an-android-library--cms-24582
附注:
1,上传过程中如果遇到“No service of type Factory available in ProjectScopeServices”异常,可以更新插件版本为:classpath 'com.github.dcendents:Android-maven-gradle-plugin:1.4.1'或'1.5.0'
-
顶
- 0
-
踩
- 0