【发布时间】:2018-10-31 22:52:06
【问题描述】:
我正在使用第三方依赖项,它将一些杰克逊文件着色为 shaded.jackson.core.* 或 shaded.jackson.databind.* 并在其应用程序中使用它(作为导入)。但是,我想使用与此依赖项中阴影不同的杰克逊版本。所以,我试图在 gradle 中使用 relocate 功能来对 jackson 依赖项进行类似(使用最新版本)的 shaded.jackson,然后使用它。
shadowJar {
mergeServiceFiles()
classifier = ''
dependencies {
include(dependency('com.fasterxml.jackson.core:jackson-annotations:2.9.6'))
include(dependency('com.fasterxml.jackson.core:jackson-core:2.9.6'))
include(dependency('com.fasterxml.jackson.core:jackson-databind:2.9.6'))
}
relocate 'com.fasterxml.jackson.core', 'shaded.jackson.core'
}
但是当我使用 gradle 构建项目时,我得到“原因:java.lang.ClassNotFoundException:shaded.jackson.core.JsonProcessingException”。在这里,“shaded.jackson.core.JsonProcessingException”是从第三方依赖项中的某个 java 类调用的。欢迎任何建议或更正!
【问题讨论】:
-
您的意思是希望第三方依赖项使用不同版本的 Jackson,还是希望对您编写的代码使用不同版本的 Jackson?
-
第三方使用不同版本的jackson
-
你为什么要这么做?
标签: java gradle jackson dependencies shadowjar