java - Gradle中的依赖阴影

标签 java gradle jackson dependencies shadowjar

我正在使用第三方依赖项,该依赖项将某些jackson文件着色为shaded.jackson.core。*或shaded.jackson.databind。*,并在其应用程序中使用了它(作为导入)。但是,我要使用不同于此依赖项中阴影阴影的版本的 jackson 。因此,我试图在gradle中使用重定位功能,以类似于(与最新版本的)shaded.jackson来着色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引起”。在这里,从第三方依赖项中的某个Java类中调用了“shaded.jackson.core.JsonProcessingException”。欢迎任何建议或更正!

最佳答案

着色的目的是使库开发人员可以包括其依赖关系的特定版本,而不会影响其库用户使用此类依赖关系的不同版本的能力。所以我不知道您为什么要尝试用其他版本覆盖阴影的Jackson类。您一定会遇到问题,因为您使用的第三方库尚未编写为使用Jackson 2.9.6版。

如果要在编写的代码中使用Jackson 2.9.6,则不要relocate这些类,而应将com.fasterxml.jackson.core...导入到您编写的类中。

关于java - Gradle中的依赖阴影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53093015/

相关文章:

java - Java路径如何转换为例如输入流

java - TextField 的 prefColumnCount 属性是什么?

java - 无法加载资源,总是返回null

android - "Execution failed for task ' :app:packageDebug ' > Failed to generate v1 signature" exception while compiling Flutter

java - com.fasterxml.jackson.core.JsonParseException : Unexpected character ('\' (code 92)) [Java]

java - Jackson:在将对象序列化为 json 时自定义转义双引号

java - JPanel 失去焦点并且听众没有射击

Java Web应用程序,如何让客户端保存生成的.txt文件?

gradle - IntelliJ IDEA 2019 不再终止运行时的先前进程

java - 如何向用于支持 Jackson 中的多态反序列化的鉴别器属性添加别名?