一、准备工作:

我的IDE:IntelliJ IDEA 2021.1.3 x64

jdk17.0.9直通车:Java 存档下载 - Java SE 17.0.12 及更早版本

如果你觉得不想要每个项目每个项目需要比如jdk版本来重复下载删除、下载删除,建议使用Jvms

练手的项目jdk都不同??一个jvms帮你搞定一切!-CSDN博客

该项目搭建的脚手架会更多以一个租房系统的蓝图进行搭建(RentingScaffolding)

同时技术框架会以SpringBoot为基础、会向微服务发展

二、项目搭建(以图为主)

①:Maven项目-jdk版本为17.0.9

②:该项目叫做:RentingScaffolding,随后不要src这个文件夹

③:pom文件修改,增加我们需要用到的一些依赖

<?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>

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

    <groupId>org.example</groupId>
    <artifactId>RentingScaffolding</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF8</project.reporting.outputEncoding>

        <java.version>17</java.version>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <!--依赖版本-->
        <spring-boot.version>3.3.3</spring-boot.version>
        <spring-cloud-alibaba.version>2023.0.1.2</spring-cloud-alibaba.version>
        <spring-cloud.version>2023.0.3</spring-cloud.version>
        <redisson.version>3.29.0</redisson.version>
        <mybatis-plus.version>3.5.7</mybatis-plus.version>
        <commons-collections4.version>4.4</commons-collections4.version>
        <aliyun.oss.version>3.17.4</aliyun.oss.version>
    </properties>
    <dependencyManagement>
    <dependencies>
    <!-- SpringCloud Alibaba 微服务 -->
    <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>
    <!-- SpringCloud 微服务 -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>${spring-cloud.version}</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>
    <!-- SpringBoot 依赖配置 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>${spring-boot.version}</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-collections4</artifactId>
        <version>${commons-collections4.version}</version>
    </dependency>
    <!-- 阿⾥云OSS-->
    <dependency>
        <groupId>com.aliyun.oss</groupId>
        <artifactId>aliyun-sdk-oss</artifactId>
        <version>${aliyun.oss.version}</version>
    </dependency>
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
        <version>${mybatis-plus.version}</version>
    </dependency>
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
        <version>${mybatis-plus.version}</version>
    </dependency>
    <dependency>
    <groupId>org.redisson</groupId>
        <artifactId>redisson-spring-boot-starter</artifactId>
        <version>${redisson.version}</version>
    </dependency>
    </dependencies>
    </dependencyManagement>
    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <configuration>
                        <skip>true</skip>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-install-plugin</artifactId>
                    <configuration>
                        <skip>true</skip>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>

④:新开发,对java学习不够深入的同学要注意合理的进行copy,不要直接照搬,别把我的项目名也copy进去了,同时按道理来说我上面写的依赖是不会报错的,Reload的时候也需要多等会、依赖挺多的,总的来说我们后面的用到的一些技术栈会有这些:

- Spring Boot 3.3.3        - Spring Cloud 2023.0.3        - Spring Cloud Alibaba 2023.0.1.2

- MyBatis Plus(用于数据访问)        - Redisson(用于分布式缓存和锁)                              - 阿里云OSS(用于对象存储)        - Apache Commons Collections4(集合工具

 同时我们需要对这个父pom文件有一个概念

1. 继承机制
  • ⼦模块⾃动继承⽗ POM 的所有配置(除⾮⼦模块显式覆盖)

  • 示例:<parent> 标签定义了继承关系,⼦模块直接获得 Spring Boot 基础配置

2. 统⼀属性管理
  • 通过 <properties> 集中定义全局变量(如版本号、编码格式)

<spring-boot.version>3.3.3</spring-boot.version>  
<java.version>17</java.version>  
  • ⼦模块通过 ${变量名} 引⽤(如 ${spring-boot.version}

  • 优势:修改版本号只需在⽗ POM 调整⼀次,避免多模块重复维护

3. 多模块聚合
  • ⽗ POM 通过 <modules> 声明所有⼦模块:

<modules>  
  <module>module1</module>  
  <module>module2</module>  
</modules>  
  • 构建机制:在⽗⼯程⽬录执⾏ mvn install 时,按顺序构建所有⼦模块

4. 依赖版本管理
  • 通过 <dependencyManagement> 统⼀管理依赖版本

<dependencyManagement>  
  <dependencies>  
    <dependency>  
      <groupId>org.springframework.cloud</groupId>  
      <artifactId>spring-cloud-dependencies</artifactId>  
      <version>${spring-cloud.version}</version>  
      <type>pom</type>  
      <scope>import</scope>  
    </dependency>  
  </dependencies>  
</dependencyManagement>  
  • ⼦模块使⽤规则

    • 只需声明 groupId 和 artifactId不写版本号

    • 示例:⼦模块添加 Redisson 依赖时只需:

    <dependency>  
      <groupId>org.redisson</groupId>  
      <artifactId>redisson-spring-boot-starter</artifactId> <!-- 版本由⽗ POM 控制 -->  
    </dependency> 
  • 关键优势

    • 避免多模块间依赖版本冲突

    • ⽗ POM 仅管理版本,不实际引⼊依赖(⼦模块需显式声明)

5. 插件配置管理
  • 通过 <pluginManagement> 统⼀管理插件

<build>  
  <pluginManagement>  
    <plugins>  
      <plugin>  
        <groupId>org.springframework.boot</groupId>  
        <artifactId>spring-boot-maven-plugin</artifactId>  
      </plugin>  
    </plugins>  
  </pluginManagement>  
</build>  
  • ⼦模块规则

    • ⾃动继承插件配置(如 Spring Boot 打包插件)

    • 可覆盖⽗ POM 的配置(按需定制)


⽗ POM 的核⼼价值

功能 作⽤ 关键技术标签
继承机制 减少⼦模块冗余配置 <parent>
统⼀属性 集中管理版本/编码等变量,⼀键修改 <properties>
多模块聚合 批量构建所有⼦模块 <modules>
依赖版本管理 解决多模块依赖冲突,版本⾃动同步 <dependencyManagement>
插件配置管理 统⼀编译/打包⾏为,保证构建⼀致性 <pluginManagement>

到这里一个简单的雏形工作就已经大概完成了。
代码仓库如下:

RentingScaffolding: 一个脚手架适用于拓展一个租房系统、适用于微服务技术栈深入开发

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐