我在当前的maven项目中包含另一个pom文件作为父文件。
父pom文件中定义的hibernate 3.3.2存在依赖关系。
我想在我当前的项目中使用最新版本的hibernate 4.3.5。我的问题是如何排除旧版本,以便在我的war文件中正确生成antlr和其他依赖项。
我也希望我的war文件没有重复的jar文件
请帮忙
答案 0 :(得分:1)
只需将您想要的版本放入您自己的POM文件中即可。
如果有多个版本的相同工件可传递地解析(通过父级或通过传递依赖性),Maven将解析查找要使用的版本。通常它使用“最近的”。如果要在项目本身的POM中声明依赖项,它将始终是“最近的”,因此将被使用。
在您的情况下,只需将hibernate:4.3.5
放入您的POM中,因此将使用此版本而不是hibernate:3.3.2
(在父级中声明),hibernate:3.3.2
没有相关的传递依赖项将被纳入项目。
只需注意一件事:这种版本解析仅针对相同的工件进行,这意味着具有相同组ID和工件ID的工件。如果父版本中的旧版本为org.hibernate:hibernate:3.3.2
,而较新版本为org.hibernate:hibernate-core:4.3.5
,则无效。在这种情况下,您需要一些技巧来明确地从父级中排除依赖关系,您可以为https://stackoverflow.com/a/7898553/395202查看一个方法。