3

我有一个使用 3rd 方库的项目(netapp nmsdk 包,但这并不真正相关)。该库似乎使用 guava r08,并专门调用com.google.commons.io.NullPointerStream。问题是该类在 r15 之后被删除。更困难的是,该库似乎不知道它的依赖关系,因此我们必须在我们的项目中手动包含 guava r08,以便应用程序在运行时找到该类。

现在,我们在几个地方使用了番石榴,但不幸的是,我们需要更新版本的番石榴中的功能。因此,稍后在我们的项目 pipeline-stack-whatever 中,我们引用了当前版本 r21。

但是 maven 排除了 r08 的瞬态依赖,转而支持 r21,所以现在我们在运行时没有所需的类!

我试图让阴影起作用,但由于它似乎没有引入 r08 中的类,所以没有什么可阴影的。

有人可以帮我弄清楚如何在 r08 中“包含”所需的临时文件以及对 r21 的显式依赖。或者,如果我走错了路,我能找到正确的方向吗?谢谢!

编辑:我想明确指出,第 3 方库似乎不是一个合适的 Maven 工件,并且是我们无法访问的完全封闭源代码。

编辑 2:好的,所以我早些时候撒了谎,它实际上是三个项目(好吧,你抓住了我,有 12 个,但只有 3 个问题)。

  • 第 3 方库需要 Guavar08 并在运行时抛出 ClassNotFound 异常。3rd 方库没有临时依赖项或包含的依赖项。
  • 项目-A 使用 3rd 方库,并具有 guava r08,因此 3rd 方可以在运行时找到它。
  • Project-B 使用 Project-A 和 Guava 21。
  • Project-C 使用 Project-A、Project-B 并且本身不使用 Guava。
  • fat jar 是根据 Project-C 的配置文件构建的。
4

0 回答 0