关键词概念
JCenter
是一个代码库,相当于一个公共的存储控件,简单的来讲就是你把你写好的aar文件及一些文档描述文件之类的东西打包上传到jCenter服务器上,其他人就可以通过jCenter服务器下载到你上传的包了。
JCenter()、mavenCenter()、google() 的区别
- Maven Central 则是由sonatype.org维护的仓库;Jcenter是一个由 bintray.com维护的仓库;google仓库是由google维护的仓库。
- Android Studio早期版本使用的是mavenCentral(),后来切换到jcenter()了。
- JCenter() 与 mavenCenter()在完全不同的服务器上维护,由不同的人提供内容,两者之间毫无关系。
Bintray
其实只是一个网站,他们负责维护JCenter这个库,就是说JCenter库是托管在Bintray网站上的。但是Bintray不只只有JCenter库,每个人都可以在上面创建自己的账号,生成自己的maven仓库,JCenter仓库只是Bintray官方账户创建的一个maven仓库。其实个人的仓库和JCenter是平级的,只不过JCenter被Android Gradle设为了标准仓库。
JitPack
是一个远程仓库,它允许你把git托管的java或android项目(貌似目前仅支持github),轻松发布到jitpack maven仓库上。
发布库步骤:
注册bintray账号:
邮箱尽量用google邮箱,国内邮箱可能不识别。
上传使用的是该库:gradle-bintray-plugin
创建bintray.gradle文件配置bintray上传,修改其中自己当前项目对应的参数:
apply plugin: 'com.jfrog.bintray'
apply plugin: 'com.github.dcendents.android-maven'
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
def artifact_version='1.0.0'
def artifact_group = 'com.libo.android'
def artifact_id = 'projectUtil'
def resName = 'projectUtil'
// 定义两个链接,下面会用到。
def siteUrl = 'https://github.com/18380438200/ProjectUitls' // 项目主页。
def gitUrl = 'git@github.com:18380438200/ProjectUitls.git' // Git仓库的url。
group = artifact_group
version = artifact_version
// 这里是读取Bintray相关的信息,我们上传项目到github上的时候会把gradle文件传上去,所以不要把帐号密码的信息直接写在这里,写在local.properties中,这里动态读取。
//Properties properties = new Properties()
//properties.load(project.rootProject.file('local.properties').newDataInputStream())
bintray {
user = properties.getProperty("bintray.user") // Bintray的用户名。
key = properties.getProperty("bintray.apikey") // Bintray刚才保存的ApiKey。
override = true
configurations = ['archives']
pkg {
repo = "util" // 上传到maven库。(这里要特别注意,如果写了maven报404错误,请在bintray创建一个仓库,这里填改成你创建的仓库的名字,如何创建请看下图。)
name = resName // 发布到Bintray上的项目名字,这里的名字不是compile 'com.yanzhenjie:andserver:1.0.1'中的andserver。
userOrg = properties.getProperty("bintray.user") // Bintray的用户名,2016年11月更新。
websiteUrl = siteUrl
vcsUrl = gitUrl
licenses = ["Apache-2.0"]
publish = true // 是否是公开项目。
version {
name = artifact_version //Bintray logical version name
}
}
}
install {
repositories.mavenInstaller {
pom.project {
name resName
description 'A wrapper library for basic functions of Google Play Services APIs'
url 'https://github.com/googlesamples/easygoogle'
inceptionYear '2020'
packaging 'aar'
groupId artifact_group
artifactId artifact_id
version artifact_version
licenses {
license {
name 'The Apache Software License, Version 2.0'
url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
distribution 'repo'
}
}
scm {
connection 'https://github.com/googlesamples/easygoogle.git'
url 'https://github.com/googlesamples/easygoogle'
}
developers {
developer {
name 'libobo'
}
}
}
}
}
local.properties中配置参数
bintray.user=xxx
bintray.apikey=xxx
在需要上传的module下配置该gradle文件引用:
apply from: 'bintray.gradle'
在项目gradle文件中配置插件:
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.+'
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
在个人中心板块的editProfile->Api key中获取apikey配置到项目中:
配置完成后,在项目gradle配置中找到publishing->bintrayUpload菜单,进行上传到bintray仓库。
最后,将bintray上的库添加到jcenter库中:











网友评论