Maven中dependency和plugins的继承与约束

Maven 中的 dependency 和 plugins 的继承和约束机制是 Maven 中非常重要的一部分,它能够让开发者更加方便地管理项目的依赖和构建过程。在 Maven 中,我们可以通过使用 dependencyManagement 和 pluginManagement 元素来实现依赖和插件的继承和约束。

一、dependency 的继承与约束

  1. 继承

当我们在 Maven 的项目中使用 dependency 时,我们可以使用 dependencyManagement 元素来对其进行中心化管理。此时,在子模块中声明的 dependency 就可以从父模块继承而来。这样,就可以在整个应用程序中用一个有组织的方式管理依赖关系。示例代码如下:

父模块 pom.xml:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
        </dependency>
    </dependencies>
</dependencyManagement>

子模块 pom.xml:

<dependencies>
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
    </dependency>
</dependencies>

通过上面的配置,子模块就可以从父模块中继承 commons-logging 的版本号,而无需显式地指定版本号。

  1. 约束

在 Maven 中,我们可以使用 dependencyManagement 元素来指定一个版本号,该版本号将会作为该依赖项的全局默认版本号。这样,所有在父模块和子模块中都不提供版本号的依赖项都会使用该全局默认版本号。示例代码如下:

父模块 pom.xml:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.3.RELEASE</version>
        </dependency>
    </dependencies>
</dependencyManagement>

子模块 pom.xml:

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
    </dependency>
</dependencies>

通过上面的配置,子模块会默认使用版本号为 5.2.3.RELEASE 的 spring-context。

二、plugins 的继承与约束

  1. 继承

在 Maven 中,我们可以使用 pluginManagement 元素来对插件进行中心化管理。此时,在子模块中声明的插件就可以从父模块继承而来。这样,就可以在整个应用程序中用一个有组织的方式管理插件的配置。示例代码如下:

父模块 pom.xml:

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
            </plugin>
        </plugins>
    </pluginManagement> 
</build>

子模块 pom.xml:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
        </plugin>
    </plugins>
</build>

通过上面的配置,子模块就可以从父模块中继承 maven-compiler-plugin 插件的版本号和配置,而无需显式地指定它们。

  1. 约束

在 Maven 中,我们可以使用 pluginManagement 元素来指定插件的全局默认版本号和配置,以确保所有在父模块和子模块中都不提供版本号和配置的插件都使用全局默认版本号和配置。示例代码如下:

父模块 pom.xml:

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.2.5.RELEASE</version>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

子模块 pom.xml:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

通过上面的配置,子模块会默认使用版本号为 2.2.5.RELEASE 的 spring-boot-maven-plugin。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Maven中dependency和plugins的继承与约束 - Python技术站

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

相关文章

  • Spring Security基于过滤器实现图形验证码功能

    针对Spring Security基于过滤器实现图形验证码功能的完整攻略,我提供以下步骤: Step 1. 添加依赖 在Maven或Gradle中添加以下依赖: <!– spring-security-web –> <dependency> <groupId>org.springframework.security&l…

    Java 2023年5月20日
    00
  • Spring5源码解析之Spring中的异步和计划任务

    下面是Spring5源码解析之Spring中的异步和计划任务的完整攻略。 异步任务 定义 Spring中使用异步任务来提高应用程序的性能和效率。异步任务是指不需要等待当前任务完成就能直接执行下一个任务的操作方式。Spring中的异步任务可以通过在方法上添加@Async注解来实现。 配置 在Spring中开启异步任务非常简单,只需要在配置文件(比如applic…

    Java 2023年5月19日
    00
  • c# 制作gif的四种方法

    C# 制作 Gif 的四种方法 1. 使用Gifski库制作Gif Gifski是一个基于 Rust 编写的 Gif 压缩库,可以生成高质量的 Gif 图像。在 C# 中,可以通过调用 Gifski 的 DLL 文件来实现 Gif 图像的制作。 以下是使用 Gifski 制作 Gif 图像的示例: using GifskiLib; // 创建 Gifski …

    Java 2023年5月19日
    00
  • boot-admin整合flowable官方editor-app源码进行BPMN2-0建模(续)

    boot-admin整合flowable官方editor-app源码进行BPMN2-0建模(续)书接上回 项目源码仓库github项目源码仓库gitee boot-admin 是一款采用前后端分离模式、基于SpringCloud微服务架构的SaaS后台管理框架。系统内置基础管理、权限管理、运行管理、定义管理、代码生成器和办公管理6个功能模块,集成分布式事务S…

    Java 2023年4月22日
    00
  • 初探Java内部类的使用

    初探Java内部类的使用 什么是内部类 Java中的内部类,指的是定义在另一个类中的类。内部类被认为是一个单独的实体,能够访问其外部类的所有成员。因此,内部类拥有更多的访问权限及更加灵活的控制能力。 一个内部类可以具有任意的访问权限及修饰符,这其中最为关键的是private,即表示该内部类仅仅只能被它的外部类所访问。不同的内部类也拥有不同的访问权限及特殊性质…

    Java 2023年5月26日
    00
  • 详解Html a标签中href和onclick用法、区别、优先级别

    下面是详解Html a标签中href和onclick用法、区别、优先级别的攻略。 href和onclick用法简介 在HTML中,a标签用于创建超链接,它允许在文档之间或页面内的不同部分之间创建链接。a标签有两个最重要的属性:href和onclick。 href属性:规定链接的目标URL地址,点击链接会跳转到指定的URL地址。 onclick属性:定义元素被…

    Java 2023年6月15日
    00
  • jvm垃圾回收算法详细解析

    垃圾回收算法的分类 垃圾回收算法可以分为两种:标记-清除算法(Mark-Sweep)和复制算法(Copying),还有它们的变体和组合。 标记-清除算法(Mark-Sweep):这是垃圾回收算法中最基础的一种算法。它将内存分成两部分,一部分被程序使用,另一部分则被垃圾回收机制使用。垃圾回收机制会遍历程序使用的内存空间,标记出未被使用的内存,然后将其清除。它的…

    Java 2023年5月19日
    00
  • 利用Spring MVC+Mybatis实现Mysql分页数据查询的过程详解

    下面是“利用Spring MVC+Mybatis实现Mysql分页数据查询的过程详解”的完整攻略。 准备工作 在实现分页查询之前,我们需要完成一些准备工作: 创建一个Spring MVC项目,并引入Mybatis、MySQL相关依赖。 创建数据库表,并插入一些测试数据。 实现分页查询 编写Mapper接口 我们先编写一个Mybatis的Mapper接口,其中…

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