当前位置: 首页 > 知识库问答 >
问题:

导入包含排除的依赖关系管理

饶志
2023-03-14

我有一个漂亮的BOM,它的依赖管理部分有很多依赖项,我想创建另一个BOM来导入除一个之外的所有依赖项。我尝试这样做:

... in my dependencyManagement section
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>${spring-boot-version}</version>
    <type>pom</type>
    <scope>import</scope>

    <exclusions>
        <exclusion>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        </exclusion>
    </exclusions>
</dependency>
...

POM在形式上是正确的,一切都可以编译。但是排除被简单地忽略了。我错过了什么?这种方法正确吗?

我正在使用Maven 3。

共有2个答案

许照
2023-03-14

截至目前的maven 3.6.3,dependencyManagement仍没有实现排除。但是,您可以将特定于项目的“BOM表”(BOM)作为第一个依赖项包含在dependencyManagement部分中,即。

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>my-group</groupId>
            <artifactId>my-group-project-bom</artifactId>
            <version>${project.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <type>pom</type>
            <version>${spring-boot.version}</version>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

然后,您可以在项目BOM中指定所有必要的工件版本,这些版本将优先于Spring启动依赖项版本。

锺超英
2023-03-14

导入时排除不起作用,请尝试将其从依赖项的实际用户中排除

 类似资料:
  • 我在maven中学习了“导入”范围,并做了下面的一个示例项目, Project_1POM文件: 项目2 POM文件: 但是,这会引发一个错误,说明JUnit包在Project2中不可用。当我从POM文件中删除依赖管理标记project_1。一切工作正常。但是根据专家医生的说法, 此范围仅在节中pom类型的依赖项上受支持。它表示要用指定POM节中的有效依赖项列表替换的依赖项。由于它们被替换,具有导入

  • 我试图排除gradle中的传递依赖项 我看到这个错误 null 在类型为org.gradle.api.internal.artifacts.dependencies.DefaultExternalModuleDependency的DefaultExternalModuleDependency{group='org.apache.kafka',name='kafka-streams',version

  • 我正在使用Maven,我希望使用一些在dependencyManagement部分中有许多依赖项的工件作为父POM。但是我也希望在我的POM中有一个dependencyManagement部分,因为我的工件将是其他一些子模块的父POM。 示例: 假设这两个父POM都为某些依赖项定义了一个版本(假设jackson的版本),但每个都有不同的版本。

  • 依赖关系:树是: 有人能帮我解除对验证api: jar: 1.0.0. GA的依赖吗?它似乎在wc pom中作为传递依赖。谢谢

  • Maven的核心功能之一是依赖管理。 一旦我们处理多模块项目(由数百个模块/子项目组成),管理依赖项是一项艰巨的任务。 Maven提供高度的控制来管理这些场景。 传递依赖发现 通常情况下,当一个库(比如A)依赖于其他库时,比如说B.如果另一个项目C想要使用A,那么该项目也需要使用库B. Maven有助于避免此类要求发现所需的所有库。 Maven通过读取依赖项的项目文件(pom.xml),找出它们的