java一个脚手架搭建
一、准备工作:
我的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: 一个脚手架适用于拓展一个租房系统、适用于微服务技术栈深入开发