概述
在开发过程中,有很多模块是不依赖于某个项目的,也就是所有项目都是通用的,这种模块有很多,对于小的工具类,我都是自己在项目下新建一个utils包,比较大
的都是通过library进行引用,以前也想着自己搞一个远程仓库进行依赖,直接通过gradle接入,研究了一下,现在主流的仓库大致有Maven center ,jcenter,也注册过账号,当我准备接入的时候发现了JitPack这个仓库,然后发现接入流程比较人性化,而且可以跟自己的Github打通,然后就选择了它作为接入方式了,然而,痛苦才刚刚开始。
正文
网上看了很多文章,各种5分钟,10分钟接入JitPack,看地我是热血沸腾,卧槽,这么简单,我也试试,然后就开始了。
One
新建一个Project,并且在项目中新建一个Library
Two
添加依赖
project的build.gradle
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.0'
}
library的build.gradle
apply plugin: 'com.android.library'
apply plugin: 'com.github.dcendents.android-maven'
group='com.github.wustor'
Three
上传到自己的Github上面去,然后发布一个版本,版本号为v0.0.1
Four
进入JitPack官网,然后使用自己的Github账号进行登录,在左侧找到你刚才发布的项目,点击会出现
当时我以为这样就可以引入了,实际上并没有发布成功,我们看到Log是红色的,说明报错了,成功的时候是绿色的,点击进去查看日志
0m0.708s
FAILURE: Build failed with an exception.
* Where:
Build file '/home/jitpack/build/build.gradle' line: 6
* What went wrong:
A problem occurred evaluating root project 'build'.
> Could not find method google() for arguments [] on repository container.
我们知道google()是谷歌自己的maven仓库,是AS3.0也就是基于gradle3.0,说明JitPack暂时还不支持gradle3.0
Five
那我就只能把gradle的版本降低至2.3.3,然后同时将gradleWrapper,然后发布第二个版本v0.0.2,不过好像并没有什么用,云端编译依然没有通过
* Where:
Build file '/home/jitpack/build/app/build.gradle' line: 1
* What went wrong:
A problem occurred evaluating project ':app'.
> Failed to apply plugin [id 'com.android.application']
> Minimum supported Gradle version is 3.3. Current version is 3.1. If using the gradle wrapper, try editing the distributionUrl in /home/jitpack/build/gradle/wrapper/gradle-wrapper.properties to gradle-3.3-all.zip
这个错误让我很无语,我明明已经上传了3.3,还跟我说没有上传,逗我玩么,重新发布了好几个版本,依然不行
Six
如果不是因为这种方式,相比jcenter有很多优势,我可能就直接放弃了,官方明显没有对gradle的版本进行适配,不过也可以理解,比较gradle3.0也是刚出来不久,但是那些5~10分钟的博客确实是成功了,然后我就自己看了看他们的Demo,发现他们的gradle版本都比较低,然后我就换成了他们的版本,也就是:
classpath 'com.android.tools.build:gradle:2.2.3'
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'
然后重新上传至Github,进行发布第三个版本,v0.0.3,成功了
点击Get it,可以看到依赖方式
compile 'com.github.wustor:JitPackDemo:v0.0.3'
Seven
如果我们想在本地使用这个开源项目也比较简单,在project的根目录下添加JitPack的maven 依赖
allprojects {
repositories {
maven { url 'https://jitpack.io' }
}
}
然后再app的目录下进行引用
dependencies {
compile 'com.github.wustor:JitPackDemo:v0.0.3'
}
由于JitPack是在云端编译的,实际上跟在本地没有什么区别,所以只要在JitPack的官网上面显示构建成功,那么在本地肯定是可以引用的,这里就不做介绍了,而且这也不是本文的重点
总结
其实写这篇博客,可能花了不到半个小时,但是在集成的时候,确实是花了很长时间,网上的博客介绍,至少我看过的,百分之百的都是gradle插件版本为2.2.3的环境下进行集成的,而且官方也给出了gradle版本对应的插件版本,就是在这种环境下还是无法成功,想起来之前在Android Studio 3.0的基础上集成Jenkins时也是各种莫名其妙的问题。不过也有可能是自己的环境哪里出了问题,等过一段时间再试试gradle的3.0版本。