方式一:使用CMD执行gradle命令
先打开CMD窗口,切换到gradle.build所在目录,
- gradle dependencies 查看当前项目中所有的架包,及依赖关系。
- gradle dependencyInsight --dependency c3p0 查看所有名字包含“c3p0”(也可输"com.mchange:c3p0")的jar分别被哪些jar依赖了。
可选参数:--configuration compileClasspath 只看dependencies领域为compileClasspath的依赖信息
可选参数:-q 值输出级别为quite(首字母为q)及以上级别的日志
例如:gradle dependencyInsight --dependency c3p --configuration compileClasspath -q
Gradle的日志级别(由低到高):
debug:
info:
lifecycle:进度
warning:
quite:重要的
error:
示例一(升级组件)
- 问题:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL4NGROVzYU50MJpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLxkTMyAzMxkTMxEDMxkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
项目启动正常,执行sql时报错:java.lang.AbstractMethodError: Method com/mchange/v2/c3p0/impl/NewProxyResultSet.isClosed()Z is abstract。
- 分析:
根据错误信息确定是c3p0版本问题。执行查询依赖命令发现是quartz2.1.7依赖的是c3p0的低版本0.9.1.1且自动引入,然后项目单独依赖了c3p0的高版本0.9.5.2;低版本中NewProxyResultSet类未实现父接口的isClosed()方法方法!执行sql时调用了低版本的jar中的方法,故报错Method is abstract.
- 解决:
查找资料发现quartz2.3.0依赖的是com.mchange:c3p0:0.9.5.2,故将quartz升级到2.3.0
示例二(升级组件)
- 问题
mybatisPlus与Pagehelper都依赖jsqlparser.一起使用也容易出现版本问题!
- 分析:
发现mp:3.2.0依赖的是jsqlparser:2.1且自动引入了,pagehelper:4.1.6依赖的是jsqlparser:0.9.5且没有自动引入;但是jsqlparser:2.0版本开始删除了0.9.5版本有的PlainSelect.getGroupByColumnReferences()方法,故pagehelper:4.1.6执行时就报错NoSuchMethodEroor!
- 解决:
查资料发现目前将pagehelper最新版本是5.1.10,依赖的是jsqlparser:2.0,故升级至5.1.10
示例三(指定组件的依赖项的版本号)
build.gradle文件种新增配置
//当遇到依赖冲突时,指定一个版本号
configurations.all() {
Configuration configuration ->
//当遇到版本冲突时,强制使用指定版本号。(会自动下载,无需在dependencies中配置)
configuration.resolutionStrategy.force([
"org.apache.xmlgraphics:batik-all:$batikAllVersion"
,"org.apache.pdfbox:pdfbox:$pdfboxVersion"
,"org.apache.xmlgraphics:xmlgraphics-commons:$xmlgraphicsCommonsVersion"
])
}