Contents
Gradle如何找出一个jar包是出自哪个依赖
在使用java开发中,进来常常需要使用gradle来组织项目,如果项目依赖太多,有的时候难免会有冲突,静态的冲突(比如类名冲突、方法名冲突等)这些还好解决,因为编译期间就不过;麻烦的是那些动态的冲突(比如依赖的类有,但是依赖方是通过反射来调用被依赖方的)。
今天就遇到一个不同模块引入了不同的netty依赖,报错
1 noSuchMethod io.netty.util.internal.MathUtil.safeFindNextPositivePowerOfTwo
遇到这种的话,最简单的解决方法就是打印出整个项目的依赖树来排查。gradle打印依赖树的方法 是使用project-report插件,
- 首先在build.gradle中添加插件
1apply plugin: 'project-report'
- 然后update项目 再运行
1./gradlew htmlDependencyReport
- 生成report完毕,通常位于项目的
1build/reports/
目录中
打开报告的html,一层一层点进去就可以找到dependency tree。