从Gradle 6.4.1中的jar中排除软件包

问题描述

我正在使用Gradle 6.4.1,并且在org.apache.drill.exec:drill-jdbc-all:1.18.0和spring-boot-starter-data-jpa中的com.jayway.jsonpath包冲突

所以我想从drill-jdbc-all.jar中排除com.jayway.jsonpath包

 compile ('org.apache.drill.exec:drill-jdbc-all:1.18.0') {
            exclude group: 'com.jayway.jsonpath'
            exclude module: 'json-path'
        }
compile group: 'com.jayway.jsonpath',name: 'json-path',version: '2.4.0'

甚至尝试过

configurations {
    all {
        compile.exclude module: 'com.jayway.jsonpath'
    }
}

但仍然显示 类层次结构是从以下位置加载的:

    com.jayway.jsonpath.spi.mapper.JacksonMappingProvider: file:/Users/abc/.gradle/caches/modules-2/files-2.1/org.apache.drill.exec/drill-jdbc-all/1.18.0/6a0b608238f4a431684cd73d132d7467bc2c3967/drill-jdbc-all-1.18.0.jar


Action:

Correct the classpath of your application so that it contains a single,compatible version of com.jayway.jsonpath.spi.mapper.JacksonMappingProvider

解决方法

按照6.4.1文档的Excluding transitive dependencies部分,尝试一下:

dependencies {
    ...
    implementation('org.apache.drill.exec:drill-jdbc-all:1.18.0') {
        exclude group: 'com.jayway.jsonpath',module: 'json-path'
    }
    ...
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...