第九章:本项目完整迁移

📅 2026/7/8 14:55:32
第九章:本项目完整迁移
这是核心章节。直接看完整的build.gradle对照pom.xml怎么写。9.1 迁移步骤概览 pom.xml → build.gradle根目录新建settings.gradle根目录新建build.gradle参照本章初始化 Gradle Wrapper验证.\gradlew clean build -x test9.2 settings.gradlerootProject.namelive9.3 完整 build.gradle可直接复制使用// 插件替代 pom.xml 的 parent buildpluginsplugins{idjavaidwaridorg.springframework.bootversion2.0.5.RELEASEidio.spring.dependency-managementversion1.0.15.RELEASE}// 项目信息groupcom.ownversion1.0sourceCompatibility1.8targetCompatibility1.8// 版本号替代 propertiesext{mybatisPlusVersion3.1.2lombokVersion1.18.6}// 仓库替代 settings.xml mirrorrepositories{maven{urlhttps://maven.aliyun.com/repository/public}maven{urlhttps://maven.aliyun.com/repository/spring}mavenCentral()mavenLocal()}// 依赖替代所有 dependencydependencies{// Spring Boot 核心版本由 BOM 管理不用写版本implementationorg.springframework.boot:spring-boot-starter-webimplementationorg.springframework.boot:spring-boot-starter-aopimplementationorg.springframework.boot:spring-boot-starter-data-rest// Tomcatscopeprovided → providedRuntimeWAR 部署到外部容器providedRuntimeorg.springframework.boot:spring-boot-starter-tomcat// JSP 支持implementationjavax.servlet:jstlimplementationorg.apache.tomcat.embed:tomcat-embed-jasper// 数据库runtimeOnlymysql:mysql-connector-javaimplementationcom.baomidou:mybatis-plus-boot-starter:${mybatisPlusVersion}implementationorg.apache.tomcat:tomcat-jdbcimplementationcom.alibaba:druid:1.1.22implementationorg.apache.shardingsphere:sharding-jdbc-spring-boot-starter:4.1.1// Spring 组件版本由 BOM 管理implementationorg.springframework:spring-jdbcimplementationorg.springframework:spring-webmvcimplementationorg.springframework:spring-context-support// 日志implementationorg.slf4j:slf4j-api:1.7.5// 验证码implementationcom.github.penggle:kaptcha:2.3.2// 定时任务 Quartzimplementationorg.quartz-scheduler:quartz:2.2.3implementationorg.quartz-scheduler:quartz-jobs// Guava原 pom 用了 RELEASE改成固定版本implementationcom.google.guava:guava:30.1.1-jre// Redisimplementationredis.clients:jedis:2.9.0implementationorg.springframework.data:spring-data-redis:2.0.6.RELEASE// Lombokoptionaltrue → compileOnly annotationProcessorcompileOnlyorg.projectlombok:lombok:${lombokVersion}annotationProcessororg.projectlombok:lombok:${lombokVersion}testCompileOnlyorg.projectlombok:lombok:${lombokVersion}testAnnotationProcessororg.projectlombok:lombok:${lombokVersion}// 自定义 starterimplementationio.github.diehao:d-finder-spring-boot-starter:2.0.0// JUnittestImplementationjunit:junit:4.12}// 编译编码配置tasks.withType(JavaCompile).configureEach{options.encodingUTF-8}// 打包bootWar{archiveFileNamelive.war}9.4 初始化 Gradle Wrapper在项目根目录执行需要已安装全局 Gradlegradle wrapper--gradle-version 7.6.4--distribution-typebin之后所有人都用.\gradlew不需要安装 Gradle.\gradlew clean build-x test9.5 常见坑⚠️ 坑一Lombok 不生效必须两行都写缺一不可compileOnlyorg.projectlombok:lombok:${lombokVersion}annotationProcessororg.projectlombok:lombok:${lombokVersion}⚠️ 坑二tomcat-embed-jasper 写错了JSP 编译用的 jasper 必须用implementation不能用compileOnly或providedRuntime// ✅ 正确implementationorg.apache.tomcat.embed:tomcat-embed-jasper⚠️ 坑三版本冲突怎么解决# 先查是谁引进来的gradle dependencyInsight--dependencyspring-core# 再强制指定版本configurations.all{resolutionStrategy{forceorg.springframework:spring-core:5.0.9.RELEASE}}⚠️ 坑四私服仓库里的包找不到repositories{maven{urlhttps://你的nexus地址/repository/maven-public/}// 如果需要认证maven{urlhttps://你的nexus地址/repository/maven-public/credentials{usernameadminpasswordpassword}}}⚠️ 坑五Guava 版本 RELEASE 无效原 pom.xml 里写了versionRELEASE/versionGradle 不支持改成具体版本implementationcom.google.guava:guava:30.1.1-jre9.6 验证迁移# 1. 验证能编译.\gradlew compileJava# 2. 打 WAR 包核心验证.\gradlew bootWar-x test# 输出build/libs/live.war# 3. 验证能启动java-jar build/libs/live.war--spring.profiles.activedev➡️ 下一章Gradle Wrapper