【问题标题】:How to exclude a maven dependency if in the parent project exists a newer version of it如果父项目中存在更新版本的Maven依赖项,如何排除它
【发布时间】:2016-08-11 18:22:59
【问题描述】:

我正在使用一个 Maven 项目,其中我有 spring 框架依赖版本 3.2.3.RELEASE,我必须将此项目导入到许多其他项目中,但在其中一些项目中我使用的是 spring 4。

只有在使用我的项目具有相同或更新版本的 spring 以及没有使用我的项目的情况下,我如何才能排除此依赖项(spring 3)?

【问题讨论】:

标签: java maven


【解决方案1】:

您可以做的一件事是手动排除不需要的依赖项:

    <dependency>
        <groupId>com.your.project</groupId>
        <artifactId>project-name</artifactId>
        <version>1.0.0</version>
        <exclusions>
            <exclusion>
                <artifactId>org.springframework</artifactId>
                <groupId>spring-core</groupId>
            </exclusion>
        </exclusions>
    </dependency>

但这可能会变得非常冗长。

如果您详细说明问题描述可能会有所帮助,因为我不清楚您到底要解决或实现什么。

例如,如果您在 1.0 版本中包含一个具有依赖项 B 的依赖项 A,然后您在 1.1 的 pom 中包含 B,则 Maven 将仅使用 1.1。我建议在这里阅读一下:https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Transitive_Dependencies

【讨论】:

  • 好吧,你已经总结了,这就是我真正想要做的。但是,如果我有一个在 POM 中声明了旧版本 spring 的项目 B 和一个在 POM 中声明了 spring 3 或更新版本的项目 A。如果我将项目 A 添加到 B 的 POM Maven 将使用旧版本的 spring,对吗?
  • 是的。我就是这么理解的。我最近需要为 Jackson 依赖项做类似的事情,其中​​父项定义了 2.7,但一个库(wiremock)需要 2.6,所以我将 2.6 定义为相应模块中wiremock 旁边的依赖项。
猜你喜欢
  • 2011-12-15
  • 2018-02-16
  • 1970-01-01
  • 1970-01-01
  • 2016-05-23
  • 2017-03-01
  • 1970-01-01
  • 2022-06-11
  • 2022-11-30
相关资源
最近更新 更多