4

具有冲突内容的工件:

org.javassist:javassist:jar:3.17.1-GA&&javassist:javassist:jar:3.12.1.GA

前者来自Hibernate,后者来自Guava。两者最终都出现在最终的战争文件中。问题是经典的冲突解决机制失败了,因为组 id 不同。因此,这两个 jar 最终都成为了最终的项目可交付成果。

我不能只在托管依赖项中排除 Guava 的依赖项,因为该项目是一个多模块。一些模块使用没有 Hibernate 的 Guava。他们会错过他们对 javassist 的依赖。但是,如果我不这样做,“多余”的工件将在项目的 war 文件中弹出。

有没有办法告诉 Maven 这两个依赖项实际上是同一代码的两个不同版本?

4

1 回答 1

3

我会坚持以下解决方案:

  1. 在项目的主 pom.xml 中添加对工件的显式依赖javassist(以便所有子模块都继承此依赖项)。
  2. javassist从 Hibernate 和 Guava 中排除。
  3. 最重要的是:添加注释说明为什么需要javassist依赖 :)
于 2013-02-07T11:44:28.080 回答