跳到主要内容
版本:v2

framework-build - 构建配置模块

1. 模块概述

framework-build 是 epoch-framework 中的构建配置模块,用于统一管理项目的依赖版本和构建插件配置。该模块采用 Maven 的父 POM 模式,通过继承的方式,确保项目各模块之间的依赖一致性和构建稳定性,减少依赖冲突和构建错误。

2. 模块结构

framework-build/
├── pom.xml # 主 POM 文件,包含所有依赖版本和构建插件配置
└── README.md # 模块说明文档

3. 核心功能

3.1 统一依赖版本管理

通过 Maven 的 <dependencyManagement> 标签统一管理项目所有依赖的版本,确保各模块使用的依赖版本一致,避免版本冲突。

主要功能:

  • Spring Boot 相关依赖版本管理
  • Spring Cloud 相关依赖版本管理
  • Spring Cloud Alibaba 相关依赖版本管理
  • 数据库相关依赖版本管理
  • 缓存相关依赖版本管理
  • 消息队列相关依赖版本管理
  • 安全相关依赖版本管理
  • 文档相关依赖版本管理
  • 构建工具相关依赖版本管理

使用示例:

<!-- 在子模块中引入依赖时,无需指定版本 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

3.2 统一构建插件配置

通过 Maven 的 <pluginManagement> 标签统一管理项目所有构建插件的配置,确保各模块使用的构建插件版本和配置一致,提高构建过程的稳定性。

主要构建插件:

  • Maven Compiler Plugin:Java 编译插件
  • Maven Surefire Plugin:单元测试插件
  • Maven Failsafe Plugin:集成测试插件
  • Maven Jar Plugin:JAR 打包插件
  • Maven War Plugin:WAR 打包插件
  • Maven Source Plugin:源码打包插件
  • Maven Javadoc Plugin:Javadoc 生成插件
  • Maven Release Plugin:版本发布插件
  • Spring Boot Maven Plugin:Spring Boot 打包插件

使用示例:

<!-- 在子模块中使用构建插件时,无需指定版本和详细配置 -->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
</plugin>

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

3.3 依赖冲突解决

通过统一依赖版本管理和依赖排除机制,解决项目中可能出现的依赖冲突问题。

依赖冲突检测:

# 使用 Maven 命令检测依赖冲突
mvn dependency:tree -Dverbose -Dincludes=[groupId]:[artifactId]

依赖排除示例:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<!-- 排除不需要的依赖 -->
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>

3.4 构建环境统一

通过统一的构建配置,确保在不同环境下的构建结果一致,提高构建过程的可重复性和可靠性。

构建环境要求:

  • JDK 17+
  • Maven 3.6+
  • Git 2.0+

4. 设计理念

4.1 集中管理

将所有依赖版本和构建插件配置集中管理,便于统一维护和升级。

4.2 约定大于配置

通过合理的默认配置和命名约定,减少开发者的配置工作量。

4.3 可扩展性

提供扩展点和配置选项,支持自定义配置和功能扩展。

4.4 版本兼容性

确保各依赖版本之间的兼容性,避免版本冲突和构建错误。

5. 使用指南

5.1 继承父 POM

在子模块的 pom.xml 中继承 framework-build 的 POM:

<parent>
<groupId>com.epoch</groupId>
<artifactId>framework-build</artifactId>
<version>${epoch.version}</version>
</parent>

5.2 引入依赖

在子模块中引入所需的依赖,无需指定版本:

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

5.3 使用构建插件

在子模块中使用所需的构建插件,无需指定版本和详细配置:

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

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

5.4 执行构建命令

使用 Maven 命令执行构建:

# 编译项目
mvn compile

# 运行单元测试
mvn test

# 打包项目
mvn package

# 安装项目到本地仓库
mvn install

# 发布项目到远程仓库
mvn deploy

6. 版本变更

6.1 主要变更

  • 3.4.0

    • 更新 Spring Boot 到 3.4.1
    • 更新 Spring Cloud 到 2024.0.0
    • 更新 Spring Cloud Alibaba 到 2023.0.3.2
    • 新增 MyBatis 3.5.17 支持
    • 新增 Redis 3.50.0 支持
    • 新增 RocketMQ 2.3.1 支持
  • 3.3.0

    • 更新 Spring Boot 到 3.3.0
    • 更新 Spring Cloud 到 2023.0.0
    • 更新 Spring Cloud Alibaba 到 2023.0.2.0
    • 优化依赖版本管理,减少版本冲突
  • 3.2.0

    • 初始版本,基于 Spring Boot 3.2.0 构建
    • 提供统一依赖版本管理和构建插件配置

7. 常见问题

7.1 如何自定义依赖版本?

可以在子模块的 pom.xml 中直接指定依赖版本,覆盖父 POM 中的版本:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>3.4.1</version> <!-- 覆盖父 POM 中的版本 -->
</dependency>

7.2 如何解决依赖冲突?

可以使用 Maven 的 dependency:tree 命令查看依赖树,找出冲突的依赖,然后通过排除或指定版本的方式解决:

# 查看所有依赖
mvn dependency:tree

# 查看特定依赖的冲突情况
mvn dependency:tree -Dverbose -Dincludes=org.slf4j:slf4j-api

7.3 如何自定义构建插件配置?

可以在子模块的 pom.xml 中自定义构建插件配置:

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>17</source> <!-- 覆盖父 POM 中的配置 -->
<target>17</target> <!-- 覆盖父 POM 中的配置 -->
</configuration>
</plugin>
</plugins>
</build>

7.4 如何升级框架版本?

只需要在父 POM 中更新 framework-build 的版本即可:

<parent>
<groupId>com.epoch</groupId>
<artifactId>framework-build</artifactId>
<version>3.4.0</version> <!-- 更新到最新版本 -->
</parent>

8. 版本兼容性矩阵

framework-build 版本Spring Boot 版本Spring Cloud 版本Spring Cloud Alibaba 版本
3.4.03.4.12024.0.02023.0.3.2
3.3.03.3.02023.0.02023.0.2.0
3.2.03.2.02022.0.02022.0.0.0-RC2
3.1.03.1.02022.0.02022.0.0.0-RC1
3.0.03.0.02022.0.02022.0.0.0-RC1