【写给自己】项目组件化,修改远程依赖库的流程,特殊情况处理

特殊情况

除了第一种正常的单层依赖。可能你项目依赖一个库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')

好了特殊情况也处理好了。牢记

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...