特殊情况
除了第一种正常的单层依赖。可能你项目依赖一个库A,那个库A内部还依赖另一个库B。如果不跑单元你想在项目中直接修改库B这种情况怎么处理?
栗子:
项目A依赖于库B,库B依赖于库C,库D,库PullToRefresh。
这时你要修改PullToRefresh库,就不能单纯的源码引入库B,在源码引入库PullToRefresh了。
处理方案:
1:将对应的库的源码Down下来,记录下放置的路径。
2:在项目的setting.grade文件中,进行PullToRefresh库的源码引入
include ‘:PullToRefresh’
project(‘:PullToRefresh’).projectDir = new File(‘../CommonProject/Android-PullToRefresh’)
***3:这时候因为PullToRefresh库是库B依赖的库,不能直接源码引入项目A中,所以要做如下操作。
将库B依赖的库,全部写入到项目A的build.gradle文件中的dependencies中,并将要修改的PullToRefresh库,源码引入。
compile 'com.beibei.android:ProjectC:1.0.2'
compile 'com.beibei.android:ProjectD:1.0.0'
// compile 'com.beibei.android:PullToRefresh:1.0.6'
compile project(':PullToRefresh')
改完dependencies,下一步为了解决重复引用的问题,需要修改build.grade中的configurations文件
configurations {
provided
all*.exclude group: 'com.beibei.android', module: 'PullToRefresh'
}
这个的意思是取消依赖库中的依赖。就是取消库B中,对于com.beibei.android.PullToRefresh的依赖。这样就能成功的跑起来了。
正常操作就OK。*
4:这样就能本地修改代码了。改好需求后,测试完毕代码没有问题后,按日常的git流程,提交到PullToRefresh对应分支中。
5:改对应的PullToRefresh的Module的版本号
uploadArchives {
repositories {
mavenDeployer {
repository(url: "string" authentication(userName: "string", password: "string")
}
pom.project {
packaging 'aar'
groupId 'com.beibei.android'
artifactId 'PullToRefresh' //LibA
version '1.0.7' //改版本号从1.0.6升级成1.0.7
}
}
}
6:上传到repository仓库中,进入对应项目的目录中运行gradle脚本
//uploadArchives
grade clean upload
7:大功告成,到需要引用PullToRefresh工程的中,修改build.gradle中的引入代码,记得提升版本号。这里写代码片
compile 'com.beibei.android:PullToRefresh:1.0.7'//版本号升级到1.0.7拉取到对应版本的代码。
// compile project(':PullToRefresh')
好了特殊情况也处理好了。牢记