Maven 与 Spring Boot 的结合是现代 Java 开发的标准实践。Spring Boot 提供了 spring-boot-starter-parent 作为父 POM,简化了 Maven 配置,提供了默认的依赖管理和插件配置。
Spring Boot Starter Parent 的作用:
- 统一管理依赖版本,避免版本冲突
- 提供默认的编译器配置
- 配置资源过滤和编码
- 提供默认的插件配置
- 简化打包和部署流程
使用 Spring Boot Starter Parent:
xml<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.0</version> <relativePath/> </parent>
Spring Boot 项目的基本 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> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.0</version> <relativePath/> </parent> <groupId>com.example</groupId> <artifactId>spring-boot-app</artifactId> <version>1.0.0</version> <name>Spring Boot Application</name> <properties> <java.version>11</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
Spring Boot Maven Plugin: Spring Boot Maven Plugin 是打包 Spring Boot 应用的关键插件:
xml<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass>com.example.Application</mainClass> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
常用 Spring Boot Starter 依赖:
spring-boot-starter-web:Web 应用开发spring-boot-starter-data-jpa:JPA 数据访问spring-boot-starter-data-mongodb:MongoDB 数据访问spring-boot-starter-security:安全认证spring-boot-starter-test:测试支持spring-boot-starter-actuator:监控和管理
多环境配置: 使用 Profile 管理不同环境:
xml<profiles> <profile> <id>dev</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <spring.profiles.active>dev</spring.profiles.active> </properties> </profile> <profile> <id>prod</id> <properties> <spring.profiles.active>prod</spring.profiles.active> </properties> </profile> </profiles>
资源过滤配置:
xml<build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> </build>
打包和运行:
bash# 打包 mvn clean package # 运行 java -jar target/spring-boot-app-1.0.0.jar # 跳过测试打包 mvn clean package -DskipTests
最佳实践:
- 使用 spring-boot-starter-parent 简化配置
- 合理选择 Starter 依赖,避免引入不必要的依赖
- 使用 Profile 管理多环境配置
- 配置资源过滤,动态替换配置
- 使用 spring-boot-maven-plugin 打包可执行 JAR
- 定期更新 Spring Boot 版本,获取安全修复
- 在 CI/CD 流程中集成构建和部署
常见问题解决:
- 依赖冲突:使用
mvn dependency:tree分析依赖关系 - 打包失败:检查插件配置和依赖版本
- 配置不生效:确认资源过滤和 Profile 配置
- 启动失败:检查主类配置和依赖完整性
Maven 与 Spring Boot 的结合能够显著简化 Java 项目的开发和部署流程。