创建父工程
父工程(Parent Project)主要用于统一管理项目的依赖版本、插件配置以及子模块的聚合构建。 通过父工程,可以在多模块项目中实现依赖的集中管理、版本控制与构建流程统一,为各个子服务提供一致的开发基础。
新建父工程 cloud2025
建议父工程只承担依赖管理与模块聚合的作用,不需要源码或资源文件,因此建议删除
pom.xml以外的所有文件,保持工程结构简洁清晰。
基础设置
接下来需要为父工程进行基础配置,包括:字符编码设置、注解处理器激活、Java 编译版本指定以及文件类型过滤等,以确保工程在构建和编译时保持一致性,避免因环境差异导致的编译或运行问题。
设置文件编码
为防止出现中文乱码或文件编码不一致的问题,应统一项目的字符集编码为
UTF-8。
注解生效激活
为了确保如
@Autowired、@Component、@Service等注解能够正常解析,需要在构建中开启注解处理器(Annotation Processing)。
Java编译版本
为保证项目在不同环境下的一致性,确保父工程及所有子模块在相同 Java 版本下编译,避免因版本差异导致的语法或兼容性问题,应统一指定 Java 编译版本(例如 Java 21)。
文件类型过滤
为了保持项目结构简洁,可以在 IDEA 中设置文件类型过滤,隐藏日志、编译缓存、临时配置等无关文件,避免无关内容干扰视图展示,从而使项目目录更清晰、聚焦于核心代码。
常见可过滤的文件类型包括:
.iml、target/、.idea/、*.log、*.tmp等,这些文件无需纳入版本管理,也不影响项目构建。
父工程pom文件
父工程的
pom.xml是多模块项目的核心配置文件,主要作用包括:
- 聚合子模块:通过
 <modules>标签将所有子模块统一管理,支持一次构建打包整个项目。- 统一依赖管理:通过
 <dependencyManagement>统一管理各模块的依赖版本,避免版本冲突。- 统一插件配置:集中配置 Maven 插件(如编译器插件、资源插件等),保证构建行为一致。
 - 定义公共属性:设置项目通用属性,如 Java 版本、字符编码、注解处理器等,使子模块继承统一配置,减少重复配置。
 总结:父工程
pom.xml是多模块项目的基础,提供统一管理和标准化配置,保证整个项目结构清晰、构建一致、易于维护。<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.sun.cloud</groupId> <artifactId>cloud2025</artifactId> <version>1.0-SNAPSHOT</version> <packaging>pom</packaging> <properties> <maven.compiler.source>21</maven.compiler.source> <maven.compiler.target>21</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <hutool.version>5.8.36</hutool.version> <lombok.version>1.18.36</lombok.version> <druid.version>1.2.24</druid.version> <mybatis.springboot.version>3.0.4</mybatis.springboot.version> <mysql.version>9.2.0</mysql.version> <swagger3.version>2.6.0</swagger3.version> <mapper.version>5.0.0</mapper.version> <fastjson2.version>2.0.56</fastjson2.version> <persistence-api.version>3.2.0</persistence-api.version> <spring.boot.test.version>3.2.4</spring.boot.test.version> <spring.boot.version>3.2.4</spring.boot.version> <spring.cloud.version>2023.0.1</spring.cloud.version> <spring.cloud.alibaba.version>2023.0.1.0</spring.cloud.alibaba.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>${spring.boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring.cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>${spring.cloud.alibaba.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>${mybatis.springboot.version}</version> </dependency> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <version>${mysql.version}</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>${druid.version}</version> </dependency> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper</artifactId> <version>${mapper.version}</version> </dependency> <dependency> <groupId>jakarta.persistence</groupId> <artifactId>jakarta.persistence-api</artifactId> <version>${persistence-api.version}</version> </dependency> <dependency> <groupId>com.alibaba.fastjson2</groupId> <artifactId>fastjson2</artifactId> <version>${fastjson2.version}</version> </dependency> <dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> <version>${swagger3.version}</version> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>${hutool.version}</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <version>${spring.boot.test.version}</version> <scope>test</scope> </dependency> </dependencies> </dependencyManagement> </project>
dependencyManagement
- Maven 提供了
 dependencyManagement元素,用于集中管理依赖的版本号。- 通常在一个组织或项目的顶层父 POM 中定义
 dependencyManagement,用于对子模块的依赖版本进行统一管理。- 使用
 dependencyManagement可以让子模块在引用依赖时无需显式声明版本号。Maven 会沿着父子层级向上查找,直到找到定义了dependencyManagement的父项目,并自动采用其中指定的版本。- 这种方式的优势在于:
 
- 多个子项目共享同一依赖时,无需重复声明版本号,减少维护成本。
 - 升级依赖时,只需在父 POM 中修改版本号即可,全局自动生效。
 - 若某个子项目需使用不同版本,可在本地显式声明
 version覆盖父配置。dependencyManagement仅用于声明依赖版本,并不会实际引入依赖。子项目仍需在自身的dependencies中显式声明所需依赖。- 若子项目未声明依赖项,则父项目的
 dependencyManagement不会自动生效;只有在子项目中显式声明依赖且未指定版本号时,才会继承父 POM 中定义的版本与作用域。- 如果子项目中定义了版本号,则会优先生效,覆盖父项目中的配置。
 
跳过单元测试
pom.xml(不推荐)<build>
  <!-- maven中跳过单元测试 -->
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <configuration>
        <skip>true</skip>
      </configuration>
    </plugin>
  </plugins>
</build>
Mysql 驱动说明
在 Spring Boot 项目中,根据 MySQL 不同版本选择合适的 JDBC 驱动,并配置数据源。下面列出常用的 MySQL 5、8、9 驱动配置示例及区别。
- 引入依赖
 
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>5.1.47</version>
</dependency>- 配置数据源
 
jdbc.driverClass = com.mysql.jdbc.Driver
jdbc.url= jdbc:mysql://localhost:3306/db2025?useUnicode=true&characterEncoding=UTF-8&useSSL=false
jdbc.user = root
jdbc.password =123456⚠️ 注意:MySQL 5 驱动使用旧的 com.mysql.jdbc.Driver。
- 引入依赖
 
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>8.0.11</version>
</dependency>- 配置数据源
 
jdbc.driverClass = com.mysql.cj.jdbc.Driver
jdbc.url= jdbc:mysql://localhost:3306/db2025?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true
jdbc.user = root
jdbc.password =123456⚠️ 注意:MySQL 8 驱动采用 com.mysql.cj.jdbc.Driver。
- 引入依赖
 
<dependency>
  <groupId>com.mysql</groupId>
  <artifactId>mysql-connector-j</artifactId>
  <version>9.2.0</version>
</dependency>- 配置数据源
 
jdbc.driverClass = com.mysql.cj.jdbc.Driver
jdbc.url= jdbc:mysql://localhost:3306/db2025?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true
jdbc.user = root
jdbc.password =123456⚠️ 注意:MySQL 9 主要更新了 Maven 坐标为 mysql-connector-j,驱动配置与 8.x 基本相同,兼容新特性和最新协议。






