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工程在打包时,会有许多的测试过程,打包前需要跳过测试过程
原文地址:https://blog.csdn.net/weixin_65019617/article/details/144319272
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!