Maven 使用不同的组id解决依赖冲突?

Maven 使用不同的组id解决依赖冲突?,maven,Maven,内容冲突的工件: org.javassist:javassist:jar:3.17.1-GA和&javassist:javassist:jar:3.12.1.GA 前者来自冬眠,后者来自番石榴。两者最终都会出现在最终的war文件中。问题是,由于组id不同,经典的冲突解决机制会失败。因此,这两个JAR最终都会出现在最终的项目交付成果中 我不能将Guava的依赖项排除在托管依赖项中,因为该项目是一个多模块的项目。有些模块使用Guava,不使用Hibernate。他们将错过javassist依赖项。但

内容冲突的工件:

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

前者来自冬眠,后者来自番石榴。两者最终都会出现在最终的war文件中。问题是,由于组id不同,经典的冲突解决机制会失败。因此,这两个JAR最终都会出现在最终的项目交付成果中

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


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

我坚持以下解决方案:

  • 在项目的主pom.xml中添加对
    javassist
    工件的显式依赖项(以便所有子模块都继承此依赖项)
  • 从Hibernate和番石榴中排除
    javassist
  • 最重要的是:添加一条注释,说明为什么需要
    javassist
    dependency:)

  • 我会将此工件的显式依赖项添加到项目的主pom.xml中,并将其从guava和hibernate中排除。@AndrewLogvinov为什么不发布一个答案?这个建议听起来不错。+1谢谢你在回答的第一行告诉我那些混蛋藏在哪里!:为什么我自己没有想到这一点?一定是头晕!谢谢!:-)这对我有帮助。另外,要注意javassist版本,尤其是在使用泛型时。我被困在我所遇到的问题中(用捷克语,但从附带的Java代码中可以明显看出)。