这是核心章节。直接看完整的
build.gradle对照pom.xml怎么写。
9.1 迁移步骤概览 (pom.xml → build.gradle)
- 根目录新建
settings.gradle - 根目录新建
build.gradle(参照本章) - 初始化 Gradle Wrapper
- 验证:
.\gradlew clean build -x test
9.2 settings.gradle
rootProject.name='live'9.3 完整 build.gradle(可直接复制使用)
// 插件(替代 pom.xml 的 <parent> + <build><plugins>)plugins{id'java'id'war'id'org.springframework.boot'version'2.0.5.RELEASE'id'io.spring.dependency-management'version'1.0.15.RELEASE'}// 项目信息group='com.own'version='1.0'sourceCompatibility='1.8'targetCompatibility='1.8'// 版本号(替代 <properties>)ext{mybatisPlusVersion='3.1.2'lombokVersion='1.18.6'}// 仓库(替代 settings.xml mirror)repositories{maven{url'https://maven.aliyun.com/repository/public'}maven{url'https://maven.aliyun.com/repository/spring'}mavenCentral()mavenLocal()}// 依赖(替代所有 <dependency>)dependencies{// Spring Boot 核心(版本由 BOM 管理,不用写版本)implementation'org.springframework.boot:spring-boot-starter-web'implementation'org.springframework.boot:spring-boot-starter-aop'implementation'org.springframework.boot:spring-boot-starter-data-rest'// Tomcat:scope=provided → providedRuntime(WAR 部署到外部容器)providedRuntime'org.springframework.boot:spring-boot-starter-tomcat'// JSP 支持implementation'javax.servlet:jstl'implementation'org.apache.tomcat.embed:tomcat-embed-jasper'// 数据库runtimeOnly'mysql:mysql-connector-java'implementation"com.baomidou:mybatis-plus-boot-starter:${mybatisPlusVersion}"implementation'org.apache.tomcat:tomcat-jdbc'implementation'com.alibaba:druid:1.1.22'implementation'org.apache.shardingsphere:sharding-jdbc-spring-boot-starter:4.1.1'// Spring 组件(版本由 BOM 管理)implementation'org.springframework:spring-jdbc'implementation'org.springframework:spring-webmvc'implementation'org.springframework:spring-context-support'// 日志implementation'org.slf4j:slf4j-api:1.7.5'// 验证码implementation'com.github.penggle:kaptcha:2.3.2'// 定时任务 Quartzimplementation'org.quartz-scheduler:quartz:2.2.3'implementation'org.quartz-scheduler:quartz-jobs'// Guava(原 pom 用了 RELEASE,改成固定版本)implementation'com.google.guava:guava:30.1.1-jre'// Redisimplementation'redis.clients:jedis:2.9.0'implementation'org.springframework.data:spring-data-redis:2.0.6.RELEASE'// Lombok:optional=true → compileOnly + annotationProcessorcompileOnly"org.projectlombok:lombok:${lombokVersion}"annotationProcessor"org.projectlombok:lombok:${lombokVersion}"testCompileOnly"org.projectlombok:lombok:${lombokVersion}"testAnnotationProcessor"org.projectlombok:lombok:${lombokVersion}"// 自定义 starterimplementation'io.github.diehao:d-finder-spring-boot-starter:2.0.0'// JUnittestImplementation'junit:junit:4.12'}// 编译编码配置tasks.withType(JavaCompile).configureEach{options.encoding='UTF-8'}// 打包bootWar{archiveFileName='live.war'}9.4 初始化 Gradle Wrapper
在项目根目录执行(需要已安装全局 Gradle):
gradle wrapper--gradle-version 7.6.4--distribution-typebin之后所有人都用.\gradlew,不需要安装 Gradle:
.\gradlew clean build-x test9.5 常见坑
⚠️ 坑一:Lombok 不生效
必须两行都写,缺一不可:
compileOnly"org.projectlombok:lombok:${lombokVersion}"annotationProcessor"org.projectlombok:lombok:${lombokVersion}"⚠️ 坑二:tomcat-embed-jasper 写错了
JSP 编译用的 jasper 必须用implementation,不能用compileOnly或providedRuntime:
// ✅ 正确implementation'org.apache.tomcat.embed:tomcat-embed-jasper'⚠️ 坑三:版本冲突怎么解决
# 先查是谁引进来的gradle dependencyInsight--dependencyspring-core# 再强制指定版本configurations.all{resolutionStrategy{force'org.springframework:spring-core:5.0.9.RELEASE'}}⚠️ 坑四:私服仓库里的包找不到
repositories{maven{url'https://你的nexus地址/repository/maven-public/'}// 如果需要认证:maven{url'https://你的nexus地址/repository/maven-public/'credentials{username='admin'password='password'}}}⚠️ 坑五:Guava 版本 RELEASE 无效
原 pom.xml 里写了<version>RELEASE</version>,Gradle 不支持,改成具体版本:
implementation'com.google.guava:guava:30.1.1-jre'9.6 验证迁移
# 1. 验证能编译.\gradlew compileJava# 2. 打 WAR 包(核心验证).\gradlew bootWar-x test# 输出:build/libs/live.war# 3. 验证能启动java-jar build/libs/live.war--spring.profiles.active=dev➡️ 下一章:Gradle Wrapper