【问题标题】:Retain higher version of Maven Dependency保留更高版本的 Maven 依赖
【发布时间】:2015-03-30 06:10:17
【问题描述】:

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

在父 pom 文件中定义了 hibernate 3.3.2 的依赖项。

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

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

请帮忙

【问题讨论】:

  • master中的依赖是直接定义为依赖还是在dependenymanagement块中定义?
  • 它被包含为父标签
  • 如果您不使用正确的术语,我们将无能为力。没有“主依赖”之类的东西。 “master pom”也不存在。您的 pom 可以引用“父级”,它将从中继承一些属性,或为您的项目定义“依赖项”。请把你的 pom 文件贴出来,我们可以整理一下。
  • 更新了问题
  • 我的 pom.xml parent_pomparent_package0.0.1org.hibernatehibernate-core4.3.5.Final

标签: maven


【解决方案1】:

只需将您想要的版本放入您自己的 POM 文件中即可。

当有多个版本的同一工件传递解析(通过父,或通过传递依赖),Maven 将解析找到要使用的版本。通常它使用“最近的”一个。如果您在项目本身的 POM 中声明依赖项,它将始终是“最近的”,因此将被使用。

在您的情况下,只需将 hibernate:4.3.5 放入您的 POM 中,因此将采用此版本而不是 hibernate:3.3.2(在父级中声明),不会在项目中包含 hibernate:3.3.2 的相关传递依赖项。

只需要注意一件事:这种版本解析仅针对相同的工件进行,这意味着具有相同组 ID 和工件 ID 的工件。如果 parent 中的旧版本是 org.hibernate:hibernate:3.3.2 而新版本是 org.hibernate:hibernate-core:4.3.5,它将不起作用。在这种情况下,您需要一些技巧来明确排除父级的依赖关系,您可以查看https://stackoverflow.com/a/7898553/395202 的一种方法。

【讨论】:

    猜你喜欢
    • 2016-09-18
    • 1970-01-01
    • 2020-07-26
    • 2019-01-24
    • 2018-07-14
    • 2016-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多