保留更高版本的Maven依赖关系

时间:2015-03-30 06:10:17

标签: maven

我在当前的maven项目中包含另一个pom文件作为父文件。

父pom文件中定义的hibernate 3.3.2存在依赖关系。

我想在我当前的项目中使用最新版本的hibernate 4.3.5。我的问题是如何排除旧版本,以便在我的war文件中正确生成antlr和其他依赖项。

我也希望我的war文件没有重复的jar文件

请帮忙

1 个答案:

答案 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查看一个方法。