gradle 模块间相互依赖包版本问题

新手上路,请多包涵

题目描述

多模块项目互相依赖的时候发生了如下问题:
A模块依赖B模块,B模块中有C依赖。
现在B模块中的C依赖版本号时显式指定的,B模块中的C版本是正确的。
但是A模块中的C依赖就已经被降级了,C依赖只会从B模块中引入。
除非现在A模块中显式指定C依赖的版本,那么这个时候A模块的C依赖版本号时对的。
这种情况该如何处理。

相关代码

相关代码如下:
A模块:api(project(:B))
B模块:api(C:1.0)

现在A中C是1.1 B中C1.0 如果A加入代码api(C:1.0) 那么A中C也会被规范为C1.0
在B里面加force和全局设置force已经试过了没有用,dependencies task中也没有发现1.0这个版本只有 1.1->1.0这个转换

阅读 2.8k
1 个回答
新手上路,请多包涵

解决了
原因是因为spring的插件引入,spring自带了一个版本号控制导致了对于插件版本号的优先级大于依赖子模块的版本号优先级,最后解决方案是在顶层添加了一个全局版本号控制。

    configurations.all {
        resolutionStrategy.eachDependency {
            if (requested.group == "mysql") {
                useVersion("8.0.15")
            }
        }
    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进