java一个脚手架搭建
本文介绍了基于SpringBoot的租房系统脚手架搭建过程。使用IntelliJ IDEA 2021.1.3和JDK 17.0.9,创建名为RentingScaffolding的Maven项目。详细说明了pom.xml配置,包括SpringBoot 3.3.3、SpringCloud 2023.0.3、MyBatisPlus等技术栈的依赖管理。重点阐述了父POM的五大功能:继承机制、统一属性管理、
一、准备工作:
我的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> |
到这里一个简单的雏形工作就已经大概完成了。
代码仓库如下:
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)