maven多模块开发

目录

聚合

可选依赖

排除依赖

属性

打包


聚合

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

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

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

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

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

XML 复制代码
   <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 提供的标准版本。

XML 复制代码
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.0</version>
    </parent>

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

XML 复制代码
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>commons-lang</groupId>
                <artifactId>commons-lang</artifactId>
                <version>2.4</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

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

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

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

可选依赖

XML 复制代码
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

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

排除依赖

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

XML 复制代码
     <!-- 排除 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标签对版本进行集中定义 ,通过${ },引入版本号

XML 复制代码
 <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插件,该插件用于对整个项目进行打包

XML 复制代码
    <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工程在打包时,会有许多的测试过程,打包前需要跳过测试过程

相关推荐
用户0942485680339 分钟前
第20章:JVM G1 GC原理、日志与调优实战
java·jvm
打工仔折腾 AI43 分钟前
把模型切换交给平台:用蓝耘智能路由搭建商品评论分析工具
java·服务器·前端·后端·python·性能优化·ai agent 实战
后端LV1 小时前
Caffeine 源码详解:为什么它是最快的 Java 本地缓存——一次压测引发的源码考古
java·后端
dadaobusi1 小时前
Trace-driven 建模(基于轨迹/踪迹的建模)
java·后端·spring
摇滚侠1 小时前
《Spring Boot 3:高级与架构设计》第 3 章 Bean 的全生命周期原理 Bean 的全生命周期概览 阅读笔记 9
spring boot·笔记·后端
知守观1 小时前
OBS 同名文件互相覆盖,客户拿错了别人的报告:一次文件串号的排查与重构
java·后端
泡海椒2 小时前
JQuick-Excel 字段映射实战:用 MAPPING 固化 Excel 表头与业务字段契约
xml·java·开发语言·excel
梦幻通灵2 小时前
IDEA 实用快捷键【持续更新】
java·ide·intellij-idea
南归北隐2 小时前
Spring AI Alibaba Graph框架实现Tools工具调用
java·后端·spring·spring ai·spring ai tools
开开心心就好2 小时前
视频模糊怎么修复?免费工具支持批量处理
java·前端·人工智能·智能手机·pdf·excel