SpringBoot:模块探究之spring-boot-dependencies

这篇具有很好参考价值的文章主要介绍了SpringBoot:模块探究之spring-boot-dependencies。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在 SpringBoot 开发时,我们常常会发现一个现象:即在 pom 文件中,加入一个新的依赖,往往不需要引入相应的版本号(如下代码块所示),就可以正常引入依赖,这其实是因为我们依赖了 spring-boot-starter-parent 模块的缘故!

点 spring-boot-starter-parent 进去查看源文件会发现,spring-boot-starter-parent 继承了 spring-boot-dependencies!

点 spring-boot-dependencies 进去查看源文件会发现,它在管理着相关依赖的版本。在 dependencyManagement 进行依赖管理,在 pluginManagement 中进行插件管理!

~

本篇内容包括:spring-boot-dependencies 模块介绍、对 spring-boot-dependencies 依赖管理方法的借鉴



一、spring-boot-dependencies 模块介绍

1、关于 spring-boot-starter-parent 模块

在 SpringBoot 开发时,我们常常会发现一个现象:即在 pom 文件中,加入一个新的依赖,往往不需要引入相应的版本号(如下代码块所示),就可以正常引入依赖,这其实是因为我们依赖了 spring-boot-starter-parent 模块的缘故!

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <!--   在这里指定了 spring boot 的版本     -->
    <version>2.7.2</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
  			...
</dependencies>
2、关于 spring-boot-dependencies 模块

点 spring-boot-starter-parent 进去查看源文件会发现,spring-boot-starter-parent 继承了 spring-boot-dependencies

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.7.2</version>
  </parent>

点 spring-boot-dependencies 进去查看源文件会发现,它在管理着相关依赖的版本。在 dependencyManagement 进行依赖管理,在 pluginManagement 中进行插件管理:

spring-boot-dependencies,Java框架,spring,spring boot,java


二、对 spring-boot-dependencies 依赖管理方法的借鉴

1、pom.xml 里的 dependencyManagement 节点

dependencyManagement 节点的作用是统一 maven 引入依赖 Jar 包的版本号,可以看出 spring-boot-dependencies 最重要的一个作用就是对 springboot 可能用到的依赖 Jar 包做了版本号的控制管理。

2、pom.xml 里的 pluginManagement 节点

pluginManagement 节点的作用是统一 Maven 引入插件的版本号,可以看出 spring-boot-dependencies 另一个作用是对 SpringBoot 可能用到的插件做了版本号的控制管理。

3、pom.xml 里的 plugins 节点

spring-boot-dependencies 引入(或覆盖)了三个插件:

maven-help-plugin:用于获取有关项目或系统的帮助信息;这个插件是 Maven 自带的插件,这里进行了覆盖设置;设置 inherited(是否继承)为 false;设置 phase 为 generate-resources、goal 为 effective-pom 的配置 output

<plugin>
  <artifactId>maven-help-plugin</artifactId>
  <inherited>false</inherited>
  <executions>
    <execution>
      <id>generate-effective-dependencies-pom</id>
      <phase>generate-resources</phase>
      <goals>
        <goal>effective-pom</goal>
      </goals>
      <configuration>
        <output>${project.build.directory}/effective-pom/spring-boot-dependencies.xml</output>
      </configuration>
    </execution>
  </executions>
</plugin>

# xml-maven-plugin:处理XML相关

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>xml-maven-plugin</artifactId>
  <version>1.0</version>
  <inherited>false</inherited>
  <executions>
    <execution>
      <goals>
        <goal>transform</goal>
      </goals>
    </execution>
  </executions>
  <configuration>
    <transformationSets>
      <transformationSet>
        <dir>${project.build.directory}/effective-pom</dir>
        <stylesheet>src/main/xslt/single-project.xsl</stylesheet>
        <outputDir>${project.build.directory}/effective-pom</outputDir>
      </transformationSet>
    </transformationSets>
  </configuration>
</plugin>

# build-helper-maven-plugin:用于设置主源码目录、测试源码目录、主资源文件目录、测试资源文件目录等

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>build-helper-maven-plugin</artifactId>
  <inherited>false</inherited>
  <executions>
    <execution>
      <id>attach-artifacts</id>
      <phase>package</phase>
      <goals>
        <goal>attach-artifact</goal>
      </goals>
      <configuration>
        <artifacts>
          <artifact>
            <file>${project.build.directory}/effective-pom/spring-boot-dependencies.xml</file>
            <type>effective-pom</type>
          </artifact>
        </artifacts>
      </configuration>
    </execution>
  </executions>
</plugin>

这三个插件共同完成了一件事,将 spring-boot-dependencies(springboot在项目里使用到的依赖)输出到 XML,并且打包 install到仓库。

这些就是spring-boot-dependencies 主要的作用了,管理控制依赖版本号,管理控制插件版本号以及引入了 3 个辅助插件。

4、对 spring-boot-dependencies 依赖管理方法的借鉴

spring-boot-dependencies 对依赖的管理方法,我们也可以借鉴一下。

spring-boot-dependencies 只管理着部分依赖,还有一些第三方依赖没有管理到,当我们创建微服务时,就可以使用这种方法来管理父类的 POM 文件,把依赖的版本号集中在主POM中管理,其他子项目只需要在使用的时候引入即可,无需写版本号。

单项目,那就没有这么管理的必要了,不要为了管理而管理。

总结一下,spring-boot-dependencies 对插件的管理方法为:文章来源地址https://www.toymoban.com/news/detail-531420.html

<!--版本号管理 start -->
<properties>
<test.version>5.5.2</test.version>
<plugin.version>5.5.2</plugin.version>
</properties>
<!--版本号管理 end -->

<!-- 依赖管理 start -->
<dependencyManagement>
<dependencies>
<groupId>xxxx</groupId>
<artifactId>xx-maven-plugin</artifactId>
<version>${test.version}</version>
</dependencies>
</dependencyManagement>
<!-- 依赖管理 end-->

<!-- 插件管理 end-->
<pluginManagement>
<plugins>
<groupId>xxxx</groupId>
<artifactId>xxxxxxx</artifactId>
<version>${plugin.version}</version>
</plugins>
</pluginManagement>
<!-- 插件管理 end-->

到了这里,关于SpringBoot:模块探究之spring-boot-dependencies的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 探究Spring Boot 中实现跨域的几种方式

    在现代Web应用中,由于安全性和隐私的考虑,浏览器限制了从一个域向另一个域发起的跨域HTTP请求。解决这个问题的一种常见方式是实现跨域资源共享(CORS)。Spring Boot提供了多种方式来处理跨域请求,本文将介绍其中的几种方法。 Spring Boot提供了一个注解 @CrossOrigin ,可以

    2024年02月05日
    浏览(31)
  • 【Spring Boot】Spring Boot结合MyBatis简单实现学生信息管理模块

    环境准备 JDK Spring Boot MyBatis 创建Spring Boot项目 使用Spring Initializr创建一个新的Spring Boot项目,并添加以下依赖: Spring Web MyBatis Framework MySQL Driver 数据库设计 在MySQL数据库中创建一个名为 studentdb 的数据库,并创建一个名为 students 的表,表结构如下:

    2024年02月11日
    浏览(33)
  • spring boot 新建多模块项目

    1、新建项目 然后 下一步 完成 即可,如果完成后pom.xml里面的springboot版本报错,则将版本修改为2.6.6即可解决,可能是新的版本没那么稳定,更换成老的版本就不报错了。 新建好后,文件结构只保留pom.xml以及idea必须文件,如下图: pom.xml中,作为模块项目的父项目,groupId、

    2023年04月09日
    浏览(34)
  • Spring Boot多模块项目打包

    例如父项目 build_test 下面有三个子模块,一个是common模块 一个是a模块,一个b模块;其中common是公共模块,a和b都依赖于公共模块common,我现在想把a和b模块打包成jar包。 创建父工程 创建3个子模块,分别是common和a和b模块 鼠标右击红框位置 选New 再选Module,鼠标左键点一下, 同

    2024年02月09日
    浏览(40)
  • Spring Boot多模块项目的创建和配置(Maven工程多模块)

    在进行分布式系统开发时,我们通常会创建多个模块的工程项目。即每一个功能就是一个Spring Boot工程,作为一个个模块,然后这些模块都会有一个父模块,父模块通常没有代码只有一个 pom.xml 。 今天就来分享一下Spring Boot如何创建一个多模块项目,以创建一个两个子模块的

    2024年02月12日
    浏览(29)
  • Spring boot easyexcel 实现复合数据导出、按模块导出

    场景: 导出数据为1对多的复合数据 一个模块是一条数据,直接填充数据无法实现 如图: 红框内为一条数据(1对多),下方箭头指向为第二条数据 如果直接填充,只能填充第一条,第二条就没办法了。 由于多行都包含许多,固定表头,只能走填充路线,怎么实现呢 实现思路

    2024年02月07日
    浏览(33)
  • 网页版Java(Spring/Spring Boot/Spring MVC)五子棋项目(四)对战模块

    匹配成功返回数据 1. message消息类别 2. ok 3. reson 4. 房间id 5. 双方id 6.白色玩家 一个类记录房间中的信息(房间id,两个用户id,是否为白棋) 信息提示框 处理匹配API 初始化游戏(棋盘,下一个棋子,接受棋子处理响应,判断是否结束) 1. 客户端连接到游戏房间后, 服务器返回

    2024年02月13日
    浏览(38)
  • spring boot3单模块项目工程搭建-上(个人开发模板)

      ⛰️个人主页:     蒾酒 🔥系列专栏 :《spring boot实战》 目录 写在前面 上文衔接 常规目录创建 common目录 exception.handle目录 result.handle目录 controller目录 service目录 mapper目录 entity目录 test目录 写在最后 本文介绍了springboot开发后端服务,单模块项目工程搭建。单模块搭建出

    2024年04月29日
    浏览(26)
  • spring boot3单模块项目工程搭建-下(个人开发模板)

    ⛰️个人主页:     蒾酒 🔥系列专栏 :《spring boot实战》 目录 写在前面 上文衔接 常用依赖介绍以及整合 web组件 测试组件 样板代码生成 数据库连接器 常用工具包 面向切面编程 ORM框架 数据连接池 接口测试、文档导出 缓存中间件 参数校验 认证鉴权 基础功能完善 跨域问

    2024年04月28日
    浏览(27)
  • 【Spring Boot】Spring Boot项目中如何查看springBoot版本和Spring的版本

    在项目中查看默认版本有两种方式如下 Spring Boot 的最新版本支持情况: 版本 发布时间 停止维护时间 停止商业支持 3.0.x 2022-11-24 2023-11-24 2025-02-24 2.7.x 2022-05-19 2023-11-18 2025-02-18 2.6.x 2021-12-17 2022-11-24 2024-02-24 2.5.x 2021-05-20 已停止 2023-08-24 2.4.x 2020-11-12 已停止 2023-02-23 2.3.x 2020-05-

    2024年02月11日
    浏览(86)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包