将开源库上传至jcenter—— 一步一个坑

用AndroidStudio开发的用户都知道,我们需要使用别人的开源库的时候只需要在Module中的build.gradle添加一句compile 即可,使用起来是多么的方便那你是否想过这是如何实现的呢?也让自己也可以弄一个让别人直接complie装一波大神,下面就来带你入坑_
###一:当我们创建一个新的项目的时候在项目的build.gradle中可以看到如下代码:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.0'
    }
}

可以看到这个为我们默认添加了jcenter()远程仓库,这样我们在依赖的时候默认都是去jcenter远程仓库拉取代码,所以哪些大神都是把代码上传到了jcenter啦。那现在让我们也来装一波大神吧…
###二:首先我们需要去Bintray官网注册一个账号,这里要非常注意的是注册账号的时候分公司账号个人账号;我们需要使用的话一定要注册个人账号,一开始我就入坑了导致一直不成功。
####1.Bintray官网:https://bintray.com/
这里写图片描述
####2.千万不要在这里注册,这里是公司账号注册的地方:https://bintray.com/signup
####3.个人账号的注册地址在这里:https://bintray.com/signup/oss
这里写图片描述
####4.这里还需要注意的一点是,使用的邮箱账号并不是支持所有公司出品的;我这里使用的是Gmail,看官可以根据自己的喜欢来选择。
###三:接下来就是登录自己的账号,来创建一个自己的仓库了这个跟github还是差别不大的,我们点击Add New Repository就可以创建一个仓库了。
这里写图片描述

四:创建一个Maven仓库,Name:为仓库的名字、Type:一定要选择Maven、Default Licenses:开源协议这个可以选择一个你自己喜欢的、Description:描述可以随便填;创建好了就可以开始紧张又刺激的上传library了。

这里写图片描述

五:下面这个ratingbar Library将是我要上传的库,下面就来一步步配置项目将他上传上去吧

这里写图片描述
####1.首先我们需要在项目的build.gradle中添加上传的插件,

dependencies{
	//.....
	classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'
	classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.1'
}

####2.前往Bintray官网点击Edit Profile—>API Key—>然后复制
这里写图片描述
这里写图片描述
####3.在local.properties文件中添加如下内容,用来授权

bintray.user=azhon//用户名
bintray.apikey=57ca96**************5676bfa68aaeb46//api key

####4.在你需要上传的Library中的build.gradle中添加如下许多代码:

apply plugin: 'com.jfrog.bintray'
apply plugin: 'com.github.dcendents.android-maven'

最终我们的依赖的效果是compile 'com.azhon:ratingbar:1.0.0'

<dependency>
  <groupId>com.azhon</groupId>
  <artifactId>ratingbar</artifactId>
  <version>1.0.0</version>
</dependency>

####5.添加仓库里面创建package的配置,

def siteUrl = 'https://github.com/azhon/RatingBar'   //项目的主页
def gitUrl = 'https://github.com/azhon/RatingBar.git'   //github仓库的地址
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())

version = "1.0.0"//version
group = "com.azhon"//groupId
bintray {
    user = properties.getProperty("bintray.user")
    key = properties.getProperty("bintray.apikey")
    pkg {
        repo = 'azhon'//创建的仓库名字
        name = 'rating-bar'//packageName
        websiteUrl = siteUrl
        vcsUrl = gitUrl
        licenses = ['Apache-2.0']//创建仓库时选择的license type
        userOrg = 'azhon' //自己bintray创建的organization名称
        publish = true // 是否是公开项目。

        version {
            name = '1.0.0'//版本号
            desc = 'A RatingBar.'//版本描述
            released = new Date()
            vcsTag = 'v1.0'
            attributes = ['gradle-plugin': 'com.use.less:com.use.less.gradle:gradle-useless-plugin']
        }
    }
    configurations = ['archives']
}
install {
    repositories.mavenInstaller {
        pom {
            project {
                packaging 'aar'
                //项目描述
                description 'A RatingBar.'
                url siteUrl
                // 填写开源协议
                licenses {
                    license {
                        name 'Apache-2.0'
                        url ' http://www.apache.org/licenses/LICENSE-2.0'
                    }
                }
                developers {
                    developer {
                        id 'azhon'
                        //填写邮件地址
                        email 'azhon.cn@gmail.com'
                    }
                }
                scm {
                    connection gitUrl
                    developerConnection gitUrl
                    url siteUrl
                }
            }
        }
    }
}
//打包源码
task sourcesJar(type: Jar) {
    from android.sourceSets.main.java.srcDirs
    classifier = 'sources'
}
//打包源码doc文档
task javadoc(type: Javadoc) {
    options.encoding = "UTF-8"
    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
}

####完整的配置可以查看这里build.gradle
####这里需要注意的是我们并没有在代码中配置artifactId但最后为什么又有了,因为jcenter默认会将你的Library名字作为这个artifactId。
###六:接下来就是神坑的地方了、在Terminal中执行gradlew install命令。当你看到BUILD SUCCESSFUL,那么恭喜你离成功又进了一步。
这里写图片描述

在这一步被其他人写的教程坑惨了,叫我执行gradle install命令一敲回车tmd竟然不是内部命令,唉说多了多是泪…编译的过程中打包Javadoc时可能会出现编码问题,只需要在task javadoc中添加options.encoding = "UTF-8"即可。各位看官如果还遇到了其他错误欢迎留言提出…

这里写图片描述
###七:在执行gradlew bintrayUpload命令即可将Library上传至创建的仓库了,你以为这里就没有坑吗?我反正执行下去一直卡在了98%死活不成功,最后通过Gradle的Task竟然上传成功了
这里写图片描述
###八:如果上面都没有问题的话,那么恭喜你了可以在Bintray官网看到你自己上传的Library了,如下图:
这里写图片描述

一开始我注册的是公司类型账号上传成功后一直没有出现Add to JCenter非常郁闷!剩下的你只需点击次按钮将你的库添加至JCenter即可然后默默的等待那边审核通过就可以直接依赖使用了。
###End:第三方引用成就感,足足踩了两天才爬出来。
这里写图片描述

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Code-Porter

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值