最近在对老项目进行组件化改造,说是改造,其实是用组件化的概念来把老项目重新写一遍。这期间就遇到了不少问题,标题中的问题就是在这个时候遇到的。
这里先描述一下这个问题出现的步骤,主app引用了net lib,因为要对报文加密,所以两个工程又都引用了同一个加密组件,问题就出现了。其实这个问题的本质就是依赖冲突,接下来就记录一下怎么处理这个问题。
首先确定问题就是依赖冲突,既然是冲突,就说明两个工程不能同时引用同一个组价或者jar包,但是由于项目的特殊性,又必须同时引用,怎么办呢?解决的思路就是,netlib中对需要引用的jar包只引用不打包,而在主app中正常引用需要的jar。
jar包只引用不打包,在需要引用jar的lib工程中配置gradle,同时需要将lib工程中的implementation fileTree配置项注释掉,不然依然会引用本地的jar
// implementation fileTree(include: ['*.jar'], dir: 'libs')
provided files('xxx.jar')
然后在主app中正常引入需要的jar
implementation files('xxx.jar')
然后重新sync