前言
写了一个开源的控件,效果如下:
一个可以当做radio的seekbar然后想着干脆发布到jcenter上供大家使用,也顺便熟悉下发布流程,然后便踏上了踩坑之旅。原因呢,便是官网 Bintray 最近貌似改版了,看了以前的博客怎么上传也不成功,期间遇到了坑1,坑2,坑3,感觉心好累,咱们好好回顾下。
看这篇文章,最好先看下这篇使用Gradle发布项目到JCenter仓库
Bintray的坑
- 401 need authoried info
简言之,就是你的local.properties中的bintray.user或者bintray.apikey没有写对,所以重新比对下改一改吧 - gradle 同步时 缺少DSL描述域
这个应该是插件版本的问题,建议改下最顶层目录中build.gradle 中的依赖,如下图所示为两种不同的:
缺少DSL域
3.can not find repo 'xxx'
这个大致跟大家介绍下,其实是因为Bintray 引入了 Organizations 的概念,现在打开我们注册后的首要一般是这样显示的:
shang1101是 user
shang是 organization (company),在gradle 中配置指定 useOrg="shang"
在gradle 脚本中必须指定,形式如下:
pkg {
userOrg = "shang" //这个是你创建时的organization,必须要有,不然没办法找到指定路径
repo = "maven" //这个仓库必须在 ‘shang’这个organization下,必须在网页上创建成功,否则还是无法找到 repo
name = "NodeSeekBar" //发布到JCenter上的项目名字
websiteUrl = siteUrl
vcsUrl = gitUrl
licenses = ["Apache-2.0"]
publish = true
}
注意,注意,注释里面的东西一般都是最重要的哦。
理一下流程
然后呢,下面以图集的形式把整个流程给大家顺一下:
-
点击自己的organization.,比如我的是 shang,加载如下链接地址:
我的organization - 接着就是创建一个 repo:
3.执行gradlew bintrayUpload,查看结果:
命令执行前 命令执行后当当当,是不是多出一个项目,然后发布到jcenter
发布到jcenter总结
按照以前的教程,是不需要在Bintray 做这么多操作的,直接一个gradle脚本就搞定一切了。为什么现在这么麻烦呢?原因就是引入了Organizations,组织嘛,就涉及到多人协作的问题了,这样就必须加入更多的权限管理了。肯定只有管理员才能创建repo的,所以你可以看下你的organization的详情,你肯定拥有管理员权限的吧
最后安利
Gradle :
compile 'com.shang.designview:nodeseekbar:1.0.0'
Maven :
<dependency>
<groupId>com.shang.designview</groupId>
<artifactId>nodeseekbar</artifactId>
<version>1.0.0</version>
<type>pom</type>
</dependency>
使用链接:自定义控件NodeSeekBar使用指南
网友评论
我以企业的名义申请了一个账号(试用30天),创建了一个 private repo,名字是 private,又创建一个 package 名字 Demo,另外 userOrg = abc , apiKey = xxxxx, 但是通过设置,上传时,一直提示 「This resource requires authentication」
publish{
repoName = 'private'
userOrg = 'abc'
groupId = 'com.demo'
artifactId = 'Demo'
publishVersion = '0.1'
desc = 'xxxx'
website = 'xxxx'
}
另外提一下,楼主的这种控件效果,原生控件SeekBar就可以实现,只要加入:
style="@style/Widget.AppCompat.SeekBar.Discrete"
即可