发布自己的开源库到Jcenter

作者: 奔跑吧李博 | 来源:发表于2020-09-14 21:12 被阅读0次
关键词概念
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库中:

bintray配置示例项目

相关文章

网友评论

    本文标题:发布自己的开源库到Jcenter

    本文链接:https://www.haomeiwen.com/subject/crxwektx.html