最近小明正在看一本名叫《历代经济变革得失》从历史角度分析经济变化的书。通过研究经济方式,作为一个工科毕业的小明,当然直接想到是数据统计,建立数学理论模型,这本书入手方式就成为了第一个吸引点。除了耳熟能详的历史事件人物,阶级的斗争之外,留下深刻印象的还是封闭专制和开放改革之间的博弈。彰显出活力生态,Open和Share是一个很好的选择。
上个月27号开源Pluto框架《我的开源Android开发框架Pluto》,得到客观上多正面的反馈。至此,进入这次主观上的第二步,将Pluto变的更容易使用--将Pluto作为library分享到jCenter。

文章结构

一.文章价值

1、实现我的框架Pluto分享到jCenter,以后开发直接用一句gradle语句就可以使用框架。
2、严格参照我的实现步骤,就不用在其他blog一篇篇阅读总结踏坑才实现自己的library分享。

  dependencies {compile 'com.minggo:Pluto:1.0'}复制代码

其中,bintray.com要熟悉,要不要翻墙?不用;Gradle配置要分清楚配置library的Gradle还是Project Gradle;编译和上传要多久?编译保证不出错就行,上传普遍是1分钟;link to jCenter审核要多久,我的是3个小时。

二.bintray账号设置

1.新官网整体认知

注册登录后的页面

其中“View Profile”是个人中心,下边会介绍获取appkey."Add New Organization"是添加组织,这个比较重要,为了保证顺利上传,手动配置自己Organization更为合适。

2.添加组织

1)选择创建新组织
选择创建新组织
2)根据填写组织相关信息,主要完成带星的填写就行
填写组织信息
3)查看创建完成的组织页面
组织管理页面

3.创建创库

手动配置自己的仓库尤为重要,注意创库名。因为pluto仓库名将会在Gradle文件中做关联,type选Maven主要针对本文实现的方式,必须选择。关于版权License选择是个可选选项,我的Pluto项目在github上创建的时候就选择了MIT,所以就选择MIT。创库描述也是一个可选填写,我就把Pluto在github上的描述添加上去了。

创建仓库

在组织页面下就可以看见一下仓库,需要了解可以点击去看看。

仓库Pluto.png

4.获取自己的apikey

依次点击页面“Edit Profile”-->"API Key" -->"Show",最好先复制存下来,等下gradle配置用到。

获取appkey

三.Gradle配置

1.整体要留意的3个地方

第一处,Project的gradle用来配置maven和bintray插件用的;第二处,Library的gradle用来配置版本、仓库等等用的;第三处,local.properties用来配置bintray的账号和apikey用的。那么关键内容将会在Library的gradle中。

准备改动一下3个地方

2.Project的Gradle配置maven和bintray插件

找到Project的Gradle文件,在dependencies 中添加一下两句插件路径

dependencies {//Gradle Android Maven pluginclasspath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'//Gradle Bintray Pluginclasspath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.1'
}复制代码

更详细的Gradle Android Maven plugin和Gradle Bintray Plugin。

3.local.properties的账号和appkey配置

找到local.properties文件

bintray.user=minggo620 // bintray用户名
bintray.apikey=ab02158f80eaa139423axxxxxxxxxx //bintray API KEY复制代码

之前复制下来的apikey派上用场了,粘贴到local.properties文件后边。为什么放在这个文件原因是项目.gitignore文件默认忽略这个文件上传,正好免除暴露key。

4.Library的Gradle配置

找到Library的Gradle文件,进行一下配置

#####1)引用Maven和bintray插件
头部加上

apply plugin: 'com.jfrog.bintray'
apply plugin: 'com.github.dcendents.android-maven'复制代码
2)读取local.properties文件

头部加上接上

Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())复制代码
3)配置必要和可选常量

比如最终形式是 compile 'com.minggo:Pluto:1.0'那么group和version如下。至于Pluto是Library的名称,在执行任务中会配置。

def siteUrl = 'https://github.com/minggo620/Pluto-Android'   // 项目的主页
def gitUrl = 'https://github.com/minggo620/Pluto-Android.git'   // Git仓库的urlversion = "1.0"
group = "com.minggo"复制代码

4)配置bintray配对任务

以下写有注释的都要注意,特别是repo的值是自己创建的仓库名称不是仓库类型,name写是Library名称。license只能写bintray提供选择类型,userOrg填写bintray后台创建organization。强调这个的原因是本人看了其他文章发现容易产生误解的地方。

bintray {user = properties.getProperty("bintray.user")key = properties.getProperty("bintray.apikey")pkg {repo = 'pluto'//自己bintray创建仓库名字name = 'Pluto'//Library的名字websiteUrl = siteUrlvcsUrl = gitUrllicenses = ['MIT']//不能随便写,只能是仓库创建时选择的license typeuserOrg = 'minggoopen' //自己bintray创建的organization名称publish = true // 是否是公开项目。version {name = '1.0'desc = 'High integrated development framework for Android applications.'released  = new Date()vcsTag = 'v1.0'attributes = ['gradle-plugin': 'com.use.less:com.use.less.gradle:gradle-useless-plugin']}}configurations = ['archives']
}复制代码
5)配置maven的Install任务

这个部分重要的就会生成POM.xml,如果没有执gradlew install就执行Studio 中Gradle栏的publishing下bintrayUpload会提示,没有默认default pom.xml。

install {repositories.mavenInstaller {// This generates POM.xml with proper parameterspom {project {packaging 'aar'// Add your description herename 'Pluto Android'description 'High integrated development framework for Android applications.'url siteUrl// Set your licenselicenses {license {name 'MIT'url 'https://raw.githubusercontent.com/minggo620/Pluto-Android/master/LICENSE'}}developers {developer {id 'minggo620'        //填写bintray或者github的用户名name 'minggo'         //姓名,可以是中文email 'minggo8en@gmail.com'}}scm {connection gitUrldeveloperConnection gitUrlurl siteUrl}}}}
}复制代码
6)配置源码和文档任务

记得在以下响应地方添加 failOnError false,否则出现install执行出现build failed。

task sourcesJar(type: Jar) {from android.sourceSets.main.java.srcDirsclassifier = 'sources'
}
task javadoc(type: Javadoc) {failOnError false //必须添加以免出错source = android.sourceSets.main.java.srcDirsclasspath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
task javadocJar(type: Jar, dependsOn: javadoc) {classifier = 'javadoc'from javadoc.destinationDir
}
artifacts {archives javadocJararchives sourcesJar
}复制代码
7)这是我Library的Gradle完整配合
apply plugin: 'com.android.library'
apply plugin: 'android-apt'
apply from: "dependencies.gradle"
apply plugin: 'com.jfrog.bintray'
apply plugin: 'com.github.dcendents.android-maven'def siteUrl = 'https://github.com/minggo620/Pluto-Android'   // 项目的主页
def gitUrl = 'https://github.com/minggo620/Pluto-Android.git'   // Git仓库的url
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())version = "1.0"
group = "com.minggo"android {compileSdkVersion 23buildToolsVersion "24.0.3"defaultConfig {minSdkVersion 14targetSdkVersion 23versionCode 1versionName "1.0"consumerProguardFiles 'proguard-rules.pro'}buildTypes {release {minifyEnabled false}}
}
bintray {user = properties.getProperty("bintray.user")key = properties.getProperty("bintray.apikey")pkg {repo = 'pluto'//自己bintray创建仓库名字name = 'Pluto'//Library的名字websiteUrl = siteUrlvcsUrl = gitUrllicenses = ['MIT']//不能随便写,只能是仓库创建时选择的license typeuserOrg = 'minggoopen' //自己bintray创建的organization名称publish = true // 是否是公开项目。version {name = '1.0'desc = 'High integrated development framework for Android applications.'released  = new Date()vcsTag = 'v1.0'attributes = ['gradle-plugin': 'com.use.less:com.use.less.gradle:gradle-useless-plugin']}}configurations = ['archives']
}install {repositories.mavenInstaller {// This generates POM.xml with proper parameterspom {project {packaging 'aar'// Add your description herename 'Pluto Android'description 'High integrated development framework for Android applications.'url siteUrl// Set your licenselicenses {license {name 'MIT'url 'https://raw.githubusercontent.com/minggo620/Pluto-Android/master/LICENSE'}}developers {developer {id 'minggo620'        //填写bintray或者github的用户名name 'minggo'         //姓名,可以是中文email 'minggo8en@gmail.com'}}scm {connection gitUrldeveloperConnection gitUrlurl siteUrl}}}}
}
task sourcesJar(type: Jar) {from android.sourceSets.main.java.srcDirsclassifier = 'sources'
}
task javadoc(type: Javadoc) {failOnError falsesource = android.sourceSets.main.java.srcDirsclasspath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
task javadocJar(type: Jar, dependsOn: javadoc) {classifier = 'javadoc'from javadoc.destinationDir
}
artifacts {archives javadocJararchives sourcesJar
}复制代码

四.执行install和upload

window和mac命令有些不一样,mac命令前边加./再敲命令。以下是window执行方式。

1.确保Gradle已经安装

在studio中 Terminal中执行查看安装情况,如果没有会自动安装。

gradlew -v复制代码

安装情况如下:

Gradle安装情况
2.执行install任务
gradlew install复制代码

结果如下:

:Pluto:bundleRelease UP-TO-DATE
:Pluto:javadoc UP-TO-DATE
:Pluto:javadocJar UP-TO-DATE
:Pluto:sourcesJar UP-TO-DATE
:Pluto:install                 BUILD SUCCESSFUL复制代码
3.执行upload任务
gradlew bintrayUpload复制代码

1分钟后结果如下:

:Pluto:install
:Pluto:bintrayUpload

BUILD SUCCESSFUL

Total time: 1 mins 33.999 secs

复制代码

五.Link to jCenter

进入bintray的Organization仓库管理后台找到自己的对应的仓库发现一个package如下图

Paste_Image.png

进入Package进行看到上传后的结果以下两个红色框框关键信息

Pluto上传后

如果是未发布将会出现一下link提示,这时就可以点击提交审核了。

Paste_Image.png

完成这一步剩下的就是邮箱等待了。3个小时后...

Paste_Image.png

六.文章总结

就这样,我的Android开发框架Puto做了Library分享到了jCenter。以后每次更新就只需要修改gradle的compile 'com.minggo:Pluto:1.0'。对于使用Pluto框架的开发者来说就不必再去github下载源码拷贝到自己的项目,想必是一件很cool的事。是否,也有了分享自己的Library到JCenter的冲动了?
Gradle配置和Pluto框架gitHub下载地址github.com/minggo620/P…

微信公众号:minggo_dev

【原创出品 未经授权 禁止转载】
【欢迎微友分享转发 禁止公号等未经授权的转载】

我是如何将Pluto作为library分享到jCenter相关推荐

  1. 如何使用Android Studio把自己的Android library分享到jCenter和Maven Central

    第一部分:在bintray上创建package 首先,你需要在bintray上创建一个package.为此,你需要一个bintray账号,并在网站上创建一个package. 第一步:在bintray. ...

  2. 我是如何准备一个技术的分享?

    在准备知乎 Live 内容的时候,我习惯性的准备了一个 PPT,又称为 Keynote.我才发现,自己已然习惯用 PowerPoint.Keynote 这些方便的工具,而不是酷炫的 Markdown. ...

  3. 我是如何自学 Python 的,分享一下经验

    不少初学 Python 或者准备学习 Python 的小伙伴问我如何学习 Python.今天就说说我当时是怎么学习的. 缘起 我大学专业是电气工程,毕业后做的是自动化方面的工作.对于高级语言编程基本是 ...

  4. Android开发:怎样把Android studio中的Library公布到Jcenter

    本人之前写了个简单的库,想放到Jcenter上.查过各种资料.踩过各种坑,久经折腾.最终发现了一个很easy而且高效的方法.现分享出来,该方法本人亲測可用,实现起来大概仅仅须要半个小时.这种方法是国外 ...

  5. android导入项目j,如何使用AndroidStudio将开源项目library发布到jcenter

    我相信技术爱好者都喜欢开源,也都喜欢分享,随着技术的慢慢提高,很多开发者想将自己的开源类库分享出来,对于Android开发者来说,以前使用Eclipse开发时,直接引用类库或者打成jar包分享出来就行 ...

  6. Mob之社会化分享集成ShareSDK

    接着上篇顺便分享一篇自己使用 ShareSDK 的笔记,上篇我们集成了 SMSSDK 完成了短信接收验证码的功能,请参考Mob 之 短信验证集成 SMSSDK,如何在项目已经集成 SMSSDK 的情况 ...

  7. 500+程序员超级实用必备效率工具,多年私藏全部免费分享

    大家好,我是DreamCoders,今天给大家分享一些我多年珍藏的浏览器收藏夹,都是平常工作学习中使用频率较高的小工具,可谓是互联网工作者必备效率工具,需要的小伙伴自取,大家看完记得点赞收藏,白嫖不好 ...

  8. python counter函数定义_分享几个自己常用的Python高级函数

    哈喽大家好我是蚂蚁,今天给大家分享几个我自己常用的Python相对高级点的函数,这些函数在特定的场景下能节省大量的代码. 简单列举一下我想要介绍的几个函数: counter:计数器 defaultdi ...

  9. 读书几年收藏的编程利器网站,给大家分享出来

    前言 大家好,我是bigsai,今天给大家分享几个非常适合程序员编程学习的网站. 工欲善其事,必先利其器,有好的武器才能打更好的仗,今天给大家分享一些程序员学习必备的编程学习网站. 像谷歌.知乎.B站 ...

最新文章

  1. 关于Android这个名字。。。
  2. Struts1.x系列教程(20):使用EventDispatchAction类处理一个form多个submit
  3. pythond的执行原理_python基础——继承实现的原理
  4. python调用所有函数_python打印所有函数调用以了解脚本
  5. 《PWA实战:面向下一代的Progressive Web APP》读书笔记
  6. 网页图表控件Highcharts如何详细设置参数
  7. 斗鱼第三方开放平台2.2版使用记录
  8. python画柱形图把奇数年份也显示出来_python怎么输出数据中的奇数
  9. linux 每日学一点《Linux链接文件类型》
  10. 蓝桥杯2019年第十届C/C++省赛A组第二题-数列求值
  11. .net2005底层类
  12. [c#基础]关于const和readonly常见的笔试题剖析
  13. 千克和磅换算程序C语言,编写程序将磅转为千克。程序提示用户输入磅数,转换为千克并显示结果。一磅约等于0.454千克。...
  14. 字体:等宽字体与比例字体 - Monospaced font Proportional font
  15. spark入门名词解释
  16. PCB设计时应该考虑的几个问题
  17. 带你从零开始入门AI绘画神器Stable Diffusion
  18. 骞云科技:假如GitLab使用CMP管理PostgreSQL
  19. uni-app省市区地址选择器
  20. 【项目管理冲刺-必会概念】

热门文章

  1. NLP在线医生(一)
  2. 采购年度计划书应该怎么写?(范文)
  3. 外观模式--牛市股票还会亏钱
  4. opera 浏览器头 不是opera 打头
  5. 计算机科学时间长被拒,计算机科学与探索外审一般多长时间 - 论文投稿 - 小木虫 - 学术 科研 互动社区...
  6. LeetCode 1079 活字印刷
  7. 使用word2vec对微博进行情感分析和分类
  8. #185. [NOIP2016 提高组] 蚯蚓题解
  9. 【03】从零开始跟我一起制作一个鸿蒙的应用-★规划搭建鸿蒙应用版的蜻蜓短视频系页面★---优雅草科技伊凡
  10. 室外无人驾驶挑战赛小结-2019‘恩智浦’杯全国大学生智能车竞赛