标准、可直接复用的 Maven 项目架构基于 Spring Boot贴合企业开发规范包含完整的目录结构、核心配置文件和分层代码示例简要Maven项目架构项目名字 src写所有代码的位置 main核心代码要交付给公司给客户的代码 java写java代码的文件夹。理论上可以写配置文件。不推荐写配置文件 包类接口等 resources写项目需要的配置文件的文件夹。直接创建maven项目自带不需要单独创建 test开发者用于测试main中编写代码是否正确的测试位置 java写java测试代码 resourses测试代码需要的配置文件不需要可以不写 pom.xml和src文件夹平行的是maven项目的配置文件。用于导入jar文件完整项目目录结构Maven 标准my-maven-project/ # 项目根目录artifactId ├── pom.xml # Maven 核心配置文件依赖、打包方式等 ├── src/ │ ├── main/ │ │ ├── java/ # 核心业务代码所有分层代码 │ │ │ └── com/ │ │ │ └── example/ │ │ │ ├── MyMavenApplication.java # 项目启动类 │ │ │ ├── controller/ # 控制层接收请求 │ │ │ │ └── UserController.java │ │ │ ├── service/ # 服务层业务逻辑 │ │ │ │ ├── UserService.java │ │ │ │ └── impl/ # 服务层实现类 │ │ │ │ └── UserServiceImpl.java │ │ │ ├── mapper/ # 持久层数据库映射MyBatis │ │ │ │ └── UserMapper.java │ │ │ ├── entity/ # 实体类数据库表映射 │ │ │ │ └── User.java │ │ │ └── config/ # 配置类MyBatis、数据库等 │ │ │ └── MyBatisConfig.java │ │ └── resources/ # 配置文件目录 │ │ ├── application.yml # Spring Boot 核心配置 │ │ ├── mybatis/ # MyBatis 映射文件 │ │ │ └── UserMapper.xml │ │ └── static/ # 静态资源前端页面、JS/CSS │ └── test/ # 测试代码目录Maven 测试专用 │ └── java/ │ └── com/ │ └── example/ │ └── UserServiceTest.java └── target/ # Maven 构建输出目录编译后的class、打包的jar/war核心配置文件pom.xml这是 Maven 项目的 “灵魂”定义了项目依赖、打包方式、JDK 版本等直接复制即可使用?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd !-- 1. 基础配置 -- modelVersion4.0.0/modelVersion !-- 集团ID一般是公司/组织域名反写 -- groupIdcom.example/groupId !-- 项目ID项目名称 -- artifactIdmy-maven-project/artifactId !-- 项目版本 -- version1.0.0/version !-- 打包方式Spring Boot 推荐 jar -- packagingjar/packaging namemy-maven-project/name descriptionMaven 架构示例项目/description !-- 2. 父工程Spring Boot 起步依赖 -- parent groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-parent/artifactId version3.2.3/version relativePath/ !-- 从Maven仓库找不本地找 -- /parent !-- 3. 核心依赖Maven自动下载 -- dependencies !-- Spring Boot Web包含Spring MVC、Tomcat等 -- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency !-- MyBatis MySQL 驱动持久层 -- dependency groupIdorg.mybatis.spring.boot/groupId artifactIdmybatis-spring-boot-starter/artifactId version3.0.3/version /dependency dependency groupIdcom.mysql/groupId artifactIdmysql-connector-j/artifactId scoperuntime/scope /dependency !-- 测试依赖仅测试环境生效 -- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-test/artifactId scopetest/scope /dependency /dependencies !-- 4. 构建配置编译、打包 -- build !-- 最终打包的jar名称 -- finalNamemy-maven-app/finalName plugins !-- Spring Boot 打包插件可执行jar -- plugin groupIdorg.springframework.boot/groupId artifactIdspring-boot-maven-plugin/artifactId /plugin !-- JDK 编译版本指定17 -- plugin groupIdorg.apache.maven.plugins/groupId artifactIdmaven-compiler-plugin/artifactId version3.11.0/version configuration source17/source target17/target encodingUTF-8/encoding /configuration /plugin /plugins /build /project核心代码示例分层实现1. 实体类entity/User.javapackage com.example.entity; // 数据库user表对应的实体类 public class User { private Long id; private String username; private String password; private Integer age; // 省略getter/setter/toString实际开发用Lombok注解简化 public Long getId() { return id; } public void setId(Long id) { this.id id; } public String getUsername() { return username; } public void setUsername(String username) { this.username username; } public String getPassword() { return password; } public void setPassword(String password) { this.password password; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age age; } Override public String toString() { return User{ id id , username username \ , age age }; } }2. 持久层mapper/UserMapper.javapackage com.example.mapper; import com.example.entity.User; import org.apache.ibatis.annotations.Select; import org.springframework.stereotype.Repository; Repository public interface UserMapper { // 根据ID查询用户MyBatis注解方式也可写XML Select(SELECT id, username, password, age FROM user WHERE id #{id}) User selectUserById(Long id); }3. 服务层service/UserService.java impl/UserServiceImpl.java// 接口 package com.example.service; import com.example.entity.User; public interface UserService { User getUserById(Long id); } // 实现类 package com.example.service.impl; import com.example.entity.User; import com.example.mapper.UserMapper; import com.example.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; Service public class UserServiceImpl implements UserService { Autowired private UserMapper userMapper; Override public User getUserById(Long id) { // 业务逻辑调用持久层查询 return userMapper.selectUserById(id); } }4. 控制层controller/UserController.javapackage com.example.controller; import com.example.entity.User; import com.example.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; RestController public class UserController { Autowired private UserService userService; // 接口地址http://localhost:8080/user/1 GetMapping(/user/{id}) public User getUser(PathVariable Long id) { // 接收前端请求调用服务层 return userService.getUserById(id); } }5. 启动类MyMavenApplication.javapackage com.example; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; // 扫描Mapper接口包 MapperScan(com.example.mapper) // Spring Boot 核心注解扫描当前包及子包 SpringBootApplication public class MyMavenApplication { public static void main(String[] args) { // 启动Spring Boot项目 SpringApplication.run(MyMavenApplication.class, args); } }6. 配置文件resources/application.yml# 服务器端口 server: port: 8080 # 数据库配置 spring: datasource: url: jdbc:mysql://localhost:3306/test_db?useUnicodetruecharacterEncodingutf8serverTimezoneAsia/Shanghai username: root # 你的MySQL用户名 password: 123456 # 你的MySQL密码 driver-class-name: com.mysql.cj.jdbc.Driver # MyBatis配置 mybatis: configuration: map-underscore-to-camel-case: true # 下划线转驼峰如user_name → userName mapper-locations: classpath:mybatis/*.xml # 映射文件路径Maven 核心命令实战常用在项目根目录pom.xml 所在目录执行以下命令# 1. 清理编译产物删除target目录 mvn clean # 2. 编译代码生成target/classes目录 mvn compile # 3. 运行测试用例 mvn test # 4. 打包生成target/my-maven-app.jar mvn package # 5. 打包并跳过测试开发常用 mvn package -DskipTests # 6. 运行打包后的Spring Boot项目 java -jar target/my-maven-app.jar总结Maven 架构核心以pom.xml为配置中心遵循 “src/main/java业务代码 src/main/resources配置 src/test/java测试” 的标准目录结构分层与 Maven 的关系业务分层Controller/Service/Mapper的代码都放在src/main/java下Maven 负责通过pom.xml管理各层依赖如 Spring MVC、MyBatis实战关键通过mvn clean package完成打包java -jar运行项目这是 Maven 管理 Spring Boot 项目的核心流程