最近在管理 gradle / maven 写的源码,想问下平时是不需要做这个传递依赖的冲突检查吗,等抛出异常的时候才做还是每次安装依赖的时候都要做一次?
最怕的问题在于不知道为什么编译期的版本冲突没有检查出来。而我们已经依赖了好多个 library,例如库 A 依赖 库 C 和库 D 的 1.0 ,但是库 B 是依赖库 C 和 D 的 2.0 。
我在网上看了 maven 和 gradle 会自动帮我以某种最短路径策略去选择依赖库。但是这种选择我也不懂是不是能够保证选择出来的版本就是没问题的,总不能每次都重新测试整个 app 吧。
而这种传递依赖的层级可能有 3/4 层。而我恰好前两天就遇到一个 java.lang.IncompatibleClassChangeError 。查了一下好像是关于依赖不兼容的问题, 编译期间没有检查出来,还是使用哪个 method 的时候才出现的 runtime exception 。
问题是我在最上层 dependency management 例如写了是 2.0 ,那我也不能保证依赖 1.0 的一定没问题的。但写成 2.0 的,那风险也同样大。
所以想向大家求教应该怎么做依赖的管理的最好方法。谢谢大家
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.