介绍

当在我们这行积累到一定程度,都会有自己的一些代码库,这些代码被多个项目使用。之前的做法是每次到新的项目中,就会把之前的代码拷贝过来,升级一下,或许会把一些纯java代码打包成jar包文件,这样项目中只要引用这个jar包就可以了,但是在Android中,我们可能还会用到一些资源文件,这样再想打包成jar包就比较麻烦了。再再升级下,我们可以使用Android Studio生成aar文件,这样就避免了资源文件无法打包的困扰。但是这样每次到新项目,我们还是要将aar文件拷贝过来,这样的维护还是需要些成本。本文将阐述如何将私有代码库发布到maven仓库中心,只要一句简单的配置代码,即可引用自己的代码库,这样是不是更好维护,更简单,逼格更高呢~

创建并配置library项目

作为一个工具类库,首先,我们需要创建一个library项目

然后在project的build.gradle配置以下两句代码

classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0'classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3'


接着在library module的build.gradle增加一些配置:

1、添加插件

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

2、定义版本

version = "0.0.1"

3、设置项目代码地址

这里我是使用github作为代码开源地址

def siteUrl = 'https://github.com/a631855639/BintrayDemo'    // project homepagedef gitUrl = 'https://github.com/a631855639/BintrayDemo.git' // project git

4、定义group

这个group定义的名称将是你之后要引用时会用到的,且要唯一,一般是用包名

group = "com.bintray.library.demo"

如何确定唯一性呢,可以打开这个地址https://bintray.com/bintray/jcenter,然后搜索一下自己的包名,看是否被人使用过了没。

5、定义pom并打包aar

install {    repositories.mavenInstaller {        // This generates POM.xml with proper parameters        pom {            project {                packaging 'aar'                name 'Helen Code For Android'//一些描述                url siteUrl                licenses {                    license {                        name 'The Apache Software License, Version 2.0'                        url 'http://www.apache.org/licenses/LICENSE-2.0.txt'                    }                }                developers {                    developer {//开发者信息                        id ''                        name ''                        email ''                    }                }                scm {                    connection gitUrl                    developerConnection gitUrl                    url siteUrl                }            }        }    }}

6、打包javadoc jar和source jar

task sourcesJar(type: Jar) {    from android.sourceSets.main.java.srcDirs    classifier = 'sources'}task javadoc(type: Javadoc) {    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}javadoc {    options{        encoding 'UTF-8'        charSet 'UTF-8'        author true    }}artifacts {    archives javadocJar    archives sourcesJar}

7、上传到maven仓库,从local.properties读取user和apikey

Properties properties = new Properties()properties.load(project.rootProject.file('local.properties').newDataInputStream())bintray {    user = properties.getProperty("bintray.user")    key = properties.getProperty("bintray.apikey")    configurations = ['archives']    pkg {        repo = "maven"        name = "BintrayLibraryDemo"                // project name in maven        websiteUrl = siteUrl        vcsUrl = gitUrl        licenses = ["Apache-2.0"]        publish = true    }}

publish = true,代表当改task执行时,就将其发布上去,如果为false就不发布。
这里你需要在项目的local.properties文件里配置bintray.user和bintray.apikey,分别为https://bintray.com/ 网站注册的用户名和密钥。
注意:不要将local.properties文件提交到代码开源库上,防止重要信息泄露,记得使用忽略文件将其忽略提交

项目整体配置

以上步骤算是配置好了,剩下就是到https://bintray.com/ 注册用户,获取bintray.user和bintray.apikey了
来个配置代码全身照吧!


获取bintray.user和bintray.apikey

要获取这两个值,必须要先到https://bintray.com/ 注册,然后点击个人头像—>编辑


如果发布失败,可能是因为你的user填错了。之前,我在注册的时候,使用的用户名是Helen,但是发现发布失败,当我改为小写helen时,成功了!当你不知道你要填大写小写时,你可以看进入你的个人主页时,地址写着是什么就是什么了,比如我的个人主页是https://bintray.com/helen。

发布

配置完以上,最后,打开命令行执行

gradlew bintrayUnload

或者如下图

双击运行bintrayUnload即可。
然后你会在bintray的个人主页下方

说明已经上传成功了,但是还没完,点击上面的项目链接进入项目主页,然后将其“Add to JCenter”提交,等待审核。


等待审核通过之后(这个差不多等半个小时吧),然后就可以使用了。用法就是使用gradle compile group名+module名+版本号

compile 'com.bintray.library.demo:app:0.01'

升级

我们的类库也会不断优化,添加功能,这时候仓库中心的代码也需要升级,这个只要将第二步中的版本号version提高一个版本即可,然后再次执行bintrayUnload。如果没有将版本号升级,就再次发布,会报错

Could not upload to 'https://api.bintray.com/content/helen/maven/BintrayLibraryDemo/0.0.1/com/bintray/library/demo/app/0.0.1/app-0.0.1-javadoc.jar': HTTP/1.1 409 Conflict

提交升级之后,需要等待一段时间。

更多相关文章

  1. 自动化代码检查优化Lint
  2. 第三部分:Android(安卓)应用程序接口指南---第二节:UI---第二章 输
  3. Android直播实现(一)Android端推流、播放
  4. 解析Android(安卓)Studio创建的第一个Android(安卓)TV项目
  5. Android之代码写布局
  6. android原生POST、httpClient4.X实现向PHP服务器上传文件
  7. android源代码分析一:使用内部(com.android.internal)和隐藏(@hid
  8. Android(安卓)Studio 3.1.3 使用NDK 编译出现不能error: no such
  9. 在英特尔® 凌动™ 平台上进行 Android* 应用开发和优化

随机推荐

  1. Android(安卓)内存优化
  2. 你还不打算试试Android(安卓)X吗?
  3. Android(安卓)布局中调字体的行距和间距
  4. android工程下运行main方法的配置方法
  5. android 实战 AppCompat实现Action Bar
  6. Android的Media架构介绍
  7. Android之Adapter用法总结
  8. 如何使用Android(安卓)SDK开发Android应
  9. Android屏幕密度(Density)和分辨率的关系
  10. android 事件流转机制