聊聊maven的pom.xml中的exclusions标签的作用

当我们在使用Maven构建项目时,pom.xml文件中的exclusions标签可以帮助我们管理依赖项,控制Maven的传递依赖范围,以便我们更加灵活地管理项目的依赖。在此,我将详细讲解exclusions标签的作用,并提供两个示例。

1. exclusions标签作用

exclusions标签作用是用于在依赖关系中排除某些项目。在Maven的依赖关系中存在传递依赖,即如果项目A依赖于项目B,而项目B依赖于项目C,那么项目A也将依赖于项目C。但是,有些情况下,我们并不想让项目C作为项目A的依赖项。这时,我们可以使用exclusions标签来排除项目C的传递依赖。

exclusions标签的语法如下:

<dependency>
    <groupId>...</groupId>
    <artifactId>...</artifactId>
    <version>...</version>
    <exclusions>
        <exclusion>
            <groupId>...</groupId>
            <artifactId>...</artifactId>
        </exclusion>
    </exclusions>
</dependency>

exclusions标签是一个可选的标签,它可以放在dependency标签内的任何位置,以排除指定groupIdartifactId的依赖项。其中,exclusion标签用于包含要排除的依赖项信息。

2. 示例1

假设我们的项目需要使用Gson库,并且我们在pom.xml中引入Gson的依赖。但是,我们同时也在项目中引入了Spring框架的依赖项。在Spring框架中,也包含有com.google.code.gson:gson这个依赖项。如果我们不采取措施,使用Spring框架时,我们的项目会自动包含两个版本的gson库,这样就会引起依赖冲突的问题。为了解决这个问题,我们可以在Gson的依赖声明中添加exclusions标签,排除Spring框架中包含的com.google.code.gson:gson依赖。

<dependencies>
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.8.5</version>
        <exclusions>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <!-- other dependencies -->
</dependencies>

上面的代码中,我们在Gson库的依赖项内添加了exclusions标签,排除了Spring框架中的spring-core依赖。这样,我们就可以避免依赖冲突的问题。

3. 示例2

假设我们的项目中需要使用Spring框架,而Spring框架里包含了一个名为commons-logging的依赖项。但是,我们的项目中已经有了自己的commons-logging库。为了避免两个版本的commons-logging库冲突,我们可以在Spring的声明中使用exclusions标签,排除掉Spring自带的commons-logging依赖:

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>5.2.5.RELEASE</version>
        <exclusions>
            <exclusion>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <!-- other dependencies -->
</dependencies>

上面的代码中,我们在Spring依赖项内添加了exclusions标签,排除了Spring自带的commons-logging依赖。如果我们没有采取这种措施,那么尽管我们在项目中已经有了commons-logging库,但是Spring会在运行时使用自带的commons-logging库,这样就可能引起依赖冲突的问题。

4. 总结

本文详细讲解了Maven的exclusions标签的作用,以及提供了两个示例来演示如何排除传递依赖。当我们需要管理依赖项,并控制Maven的传递依赖范围时,exclusions标签是一个非常有用的标签。我们可以在依赖声明中使用exclusions标签,帮助我们避免依赖冲突的问题,以及更加灵活地管理项目的依赖。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:聊聊maven的pom.xml中的exclusions标签的作用 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 浅谈spring boot 1.5.4 异常控制

    在Spring Boot 1.5.4中,异常控制是非常重要的。它可以帮助我们快速定位问题,提高应用程序的可维护性和可用性。本文将浅谈Spring Boot 1.5.4异常控制,并提供两个示例。 1. 异常处理方式 在Spring Boot 1.5.4中,我们可以通过以下方式处理异常: 使用@ControllerAdvice注解处理全局异常。 @Control…

    Java 2023年5月15日
    00
  • Java读取并下载网络文件的方法

    以下是详细的“Java读取并下载网络文件的方法”的攻略: 1. 使用Java标准库中的URL和URLConnection类实现 1.1 代码示例 import java.io.InputStream; import java.io.FileOutputStream; import java.net.URL; import java.net.URLConnec…

    Java 2023年5月20日
    00
  • SpringBoot使用自定义json解析器的使用方法

    下面是SpringBoot使用自定义JSON解析器的使用方法攻略。 前置知识 熟悉SpringBoot。 了解Jackson JSON库。 自定义JSON解析器的使用方法 自定义JSON解析器 SpringBoot默认使用Jackson作为JSON库,我们可以通过继承Jackson的ObjectMapper类来自定义JSON解析器。 示例代码如下: impo…

    Java 2023年5月26日
    00
  • 利用js制作html table分页示例(js实现分页)

    下面是利用 js 制作 HTML table 分页示例的攻略。 一、分页概述 分页是指将大量的记录拆分成若干个页面进行展示,以减轻页面压力,提高页面加载速度。在实际开发中,我们通常会使用后端语言来实现分页,比如常用的 PHP 分页。但是,为了提高用户体验,我们也可以使用前端语言 JavaScript 来实现分页。 具体的,我们可以使用js将数据分成若干页,然…

    Java 2023年6月16日
    00
  • 闲言碎语-逐步了解Spring

    当我们开始学习 Spring 的时候,我们经常会被各种概念和组件迷惑。为了逐步了解 Spring,以下是一些基本步骤: 1. 了解Spring的核心概念 在学习 Spring 之前,需要先了解 Spring 的基础概念。以下是一些常见的 Spring 核心概念: 依赖注入(Dependency Injection,DI) 依赖注入是 Spring 框架的核心…

    Java 2023年5月19日
    00
  • MyBatis框架简介及入门案例详解

    MyBatis框架简介及入门案例详解 MyBatis框架简介 MyBatis是一个持久层框架,它支持定制化SQL、存储过程和高级映射。MyBatis消除了几乎所有的JDBC代码和参数的手工输入以及对结果集的检索封装。MyBatis可以采用注解或xml方式配置映射关系,支持动态SQL,极其灵活方便。 MyBatis入门案例 准备工作 1.创建一个Java We…

    Java 2023年5月20日
    00
  • SpringBoot项目打包发布到外部tomcat(出现各种异常的解决)

    下面我就为您讲解SpringBoot项目打包发布到外部Tomcat的完整攻略,包括出现各种异常的解决方法。 一、生成war包 在pom.xml中添加以下代码,用于生成war包: <packaging>war</packaging> 在pom.xml中添加以下代码,排除掉内嵌的Tomcat插件: <dependency> &…

    Java 2023年6月2日
    00
  • java中线程挂起的几种方式详解

    Java中线程挂起的几种方式详解 在Java中,我们可以通过挂起线程来实现线程的暂停,以便于进行一些特殊的处理。下面将介绍Java中线程挂起的几种方式。 1. 使用Thread.sleep() 调用Thread.sleep()方法可以让当前线程休眠指定的时间(以毫秒为单位)。例如,以下代码将让当前线程休眠5秒钟: try { Thread.sleep(500…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部