当前位置: 首页 > news >正文

maven多模块开发

目录

聚合

可选依赖

排除依赖

属性

打包


聚合

聚合就是将多个模块组成一个整体,进行项目构建。聚合工程(也称为多模块项目)是 Maven 的一种项目结构,它允许将一个大型项目拆分为多个较小的、更易于管理的子模块。每个子模块可以独立开发、测试和部署,但它们共享同一个父 POM 文件或聚合 POM 文件进行统一管理。

这种结构有助于提高项目的可维护性和模块化程度,同时简化依赖管理和构建过程,避免不同模块而导致的版本冲突问题。 

聚合工程通常是一个不具有业务功能的"空"工程(有且仅有一个pom文件)

使用<packaging>pom</packaging>,用来标识,该模块是一个聚合工程
  <packaging>pom</packaging>

使用 modules,用来标识这个聚合工程下面,有哪些子模块

   <modules><module>Security-Quirk-Start</module><module>TokenDemo</module></modules>

 聚合工程的父级依赖采用 Spring Boot 提供的 spring-boot-starter-parent,以此来统一管理所有 Spring Boot 系列依赖的版本号。

spring-boot-starter-parent 已经为所有被 Spring Boot 管理的依赖进行了统一的版本控制,这样做的目的是确保 SecurityDemo 这个聚合工程下的所有子模块中的 Spring Boot 系列依赖版本都遵循 spring-boot-starter-parent 提供的标准版本。

    <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.0</version></parent>

非SpringBoot系列依赖的版本号,使用dependencyManagement进行统一管理

    <dependencyManagement><dependencies><dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>2.4</version></dependency></dependencies></dependencyManagement>

在每一个子模块pom文件中,都指定聚合工程

relativePath用来指定,聚合工程pom文件所在的位置

通过使用聚合工程(多模块项目)并结合父 POM 中的 <dependencyManagement> 部分,你可以有效地统一管理所有子模块的依赖版本,从而避免不同模块导入的版本不一致导致的依赖冲突问题。

可选依赖

        <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency>

optional设置为true后依赖将不具有传递性。默认为false。这样同时引用这个模块时,就不会受到这个依赖的影响

排除依赖

若子模块不是自己开发的,子模块引入的某个依赖对自己有影响,此时可以使用排除依赖(别人引用的依赖,自己不想用)

     <!-- 排除 Spring Boot 依赖的日志包冲突,采用其他日志 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions></dependency>

这样就可以引入其他日志了,例如SpringBoot改为引入log4j2 https://blog.csdn.net/weixin_65019617/article/details/144321732

属性

maven中引入properties标签对版本进行集中定义 ,通过${ },引入版本号

 <properties><commons.lang.version>2.4</commons.lang.version><mysql.version>8.0.11</mysql.version></properties><dependencyManagement><dependencies><dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>${commons.lang.version}</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version></dependency></dependencies></dependencyManagement>

打包

在聚合工程的父工程中添加spring-boot-maven-plugin插件,该插件用于对整个项目进行打包

    <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><mainClass>com.xuexi.SecurityApplication</mainClass> <!--指定启动类--></configuration></plugin></plugins></build>

SpringBoot工程在打包时,会有许多的测试过程,打包前需要跳过测试过程

多环境开发

SpringBoot配置文件多环境开发-CSDN博客


http://www.mrgr.cn/news/79480.html

相关文章:

  • uboot移植网络驱动过程,无法ping通mx6ull和ubuntu问题解决方案
  • 一个简单带颜色的Map
  • 轮播(css+js)
  • 设计模式的艺术读书笔记
  • 【分布式】Redis分布式缓存
  • OpenGL ES详解——glUniform1i方法是否能用于设置纹理单元
  • 电子商务人工智能指南 3/6 - 聊天机器人和客户服务
  • 快充诱骗协议芯片XSP08Q应用案例
  • pika:适用于大数据量持久化的类redis组件|简介及安装(一)
  • Qt之第三方库‌QXlsx使用(三)
  • shell脚本实战案例
  • UE_C++ —— 数据类型
  • 【动手学电机驱动】STM32-MBD(1)安装 STM32 硬件支持包
  • 使用IntelliJ IDEA开发Gradle插件并发布到本地
  • openharmony5.0版本源码一二级目录概览
  • 【C++游戏程序】easyX图形库还原游戏《贪吃蛇大作战》(三)
  • Scala-隐式转换
  • “切片赋值”创建列表批量操作“新”方法(Python)
  • JDK17 CompletableFuture
  • shell自动显示当前git的branch
  • [机器学习] 监督学习之线性回归与逻辑回归
  • C++ 完美转发和左值右值
  • 利用高德地图API,如何在PHP与vue3中实现地图缩放功能
  • UE5.5 Geometry库平面切割原理分析
  • Vue3+Vite+ElementPlus 构建 笔记
  • 深入理解 Spring MVC 中的 @RequestBody 注解