Java项目全面升级转化经验(涉及JDK、Spring boot版本及依赖管理架构)

 更新时间:2025年09月12日 11:11:28   作者:Hi-Jimmy  
在软件开发领域,项目升级是一个必然的过程,随着技术的不断进步和业务需求的变化,对于旧项目的升级和优化已成为许多企业必须面对的问题,这篇文章主要介绍了Java项目全面升级转化的相关资料,包括JDK、Spring boot版本及依赖管理架构,需要的朋友可以参考下

这段时间有个艰巨的任务,把早期项目改造为新版本架构,涉及到JDK版本、Spring boot版本以及依赖管理架构改造。

需求

  • 将依赖管理从Gradle 转换为 Maven

  • 将 JDK 1.8 版本升级到 17

  • 将Spring Boot 2.7.13升级到 3.5.0

计划

为了更顺畅的完成以上改造,大体做了以下计划:

步骤内容
1Gradle 转换为 Maven 构建
2升级 JDK1.8 版本到 17
3升级 Spring Boot 2.7.13到 3.5.0
4源码兼容性调整
5测试和验证

前置准备

  1. 确保项目可以正常构建并运行
  2. 确保项目依赖完整并已去除无用依赖
  3. 确认好项目的依赖各类版本

一、Gradle 转换为 Maven

依赖管理作为第一步,因为相比之下改动最小,基本不牵扯代码修改。同时,最开始切换Maven,也为之后升级过程中可能存在的依赖版本修改做准备。

1.pom转化

  • 打开 IDEA,右键项目根目录 → Add Framework Support → 勾选 Maven。
  • IDEA 会生成 pom.xml 文件。
  • 手动迁移 build.gradle 中的依赖、插件信息。

如果使用社区版Idea:
手动创建pom并逐一将所有build.gradle转化为pom.xml。

2.移除所有gradle相关文件

  • build.gradle / build.gradle.kts
  • settings.gradle
  • .gradle/
  • gradlew、gradlew.bat

3.移除.idea目录并重启idea

4.关键步骤

在idea中右键根目录pom.xml文件选择“添加项目为maven”。

注意:
由于maven与gradle的很多写法不同,在实际加载依赖时会提示各种错误,一般需要额外注意,对指定目录依赖的引用,并注意对Lombok的编译时排除的设定。

指定目录依赖的引用
例如:

<dependency>
    <groupId>com.local</groupId>
    <artifactId>opencv</artifactId>
    <version>453</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/main/resources/lib/opencv/opencv-453.jar</systemPath>
</dependency>

Lombok的编译时排除

例如:

<build>
    <plugins>
        <!-- 编译插件 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.11.0</version>
            <configuration>
                <source>${java.version}</source>
                <target>${java.version}</target>
                <annotationProcessorPaths>
                    <path>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                        <version>${lombok.version}</version>
                    </path>
                </annotationProcessorPaths>
            </configuration>
        </plugin>
    </plugins>
</build>

二、升级JDK

1.修改项目SDK版本

2.修改平台SDK版本

3.修改JDK版本变化带来的语法区别

一些写法上的改变,如:

  • 一些废弃的写法
  • 一些var类型的声明
  • 依赖版本的变化
    需要按需调整,不再累述。

三、Spring boot升级

相比SDK版本变化,Spring boot的升级带来的代码修改是最大的。

1.解决版本依赖问题

注意:版本的取舍很重要,哪些需要升级,哪些需要保留低版本,需要根据项目情况判断,一般以spring boot为核心的组件都应该做升级

2.解决新版本写法

例如:

javax.xml.bind → jakarta.xml.bind

3.解决缺失依赖问题

升级后,一些原有的依赖可能会被舍弃,需要手动加上,如:
zip4j 2.x 版本中,包结构已完全重构net.lingala.zip4j.core.* 目录被移除。如果你升级了 zip4j 到 2.x,就找不到这个类。

四、代码兼容性调整

迁移过程中出现的报错和异常:

1.xml报错

自 JDK 9 开始,javax.xml.bind 所在的 JAXB(Java Architecture for XML Binding)模块被移出 JDK 默认类库,在 JDK 11 及更高版本中已彻底移除。

import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;

改为:

import jakarta.xml.bind.JAXBContext;
import jakarta.xml.bind.Marshaller;

2.升级mybitasPlus后,分页报错

page.setDesc()//不存在该方法
page.setAsc() //不存在

改为:

page.addOrder(OrderItem.desc(...))
page.addOrder(OrderItem.asc(...))

3.已经被弃用的CommonsMultipartFile

import org.springframework.web.multipart.commons.CommonsMultipartFile;

改为:

import org.springframework.web.multipart.MultipartFile;

4.已经弃用的Base64Utils

import org.springframework.util.Base64Utils;

byte[] bytes = Base64Utils.decodeFromString(pptImage);//解码

改为:

import java.util.Base64;
byte[] bytes = Base64.getDecoder().decode(pptImage);//解码

5.javax→jakarta

大部分隶属javax的类库都改为jakarta,如::

import javax.websocket.*;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;

改为:

import jakarta.websocket.*;
import jakarta.websocket.server.PathParam;
import jakarta.websocket.server.ServerEndpoint;

6.mybatis字段相关修改

@TableField(strategy = FieldStrategy.IGNORED)

改为:

@TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)

五、测试与验证

1.逐一build每个项目

务必使用maven重新导入所有依赖,并重新进行build操作,如果这个过程无误,则证明本次升级成功,如有问题,按需解决

2.依赖关系确认

还需确认转化后的项目的树状结构是否与之前一致,即父子关系不能变

3.运行项目

运行项目进行开发环境测试,确保模块正常

4.打包测试

打包进行测试环境测试,以确保升级后功能可正常跑通

总结

到此这篇关于Java项目全面升级转化经验的文章就介绍到这了,更多相关Java项目全面升级内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java手写简易版HashMap的使用(存储+查找)

    Java手写简易版HashMap的使用(存储+查找)

    这篇文章主要介绍了Java手写简易版HashMap的使用(存储+查找),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • 浅谈JAVA设计模式之代理模式

    浅谈JAVA设计模式之代理模式

    这篇文章主要介绍了JAVA设计模式之代理模式的的相关资料,文中代码非常详细,供大家参考和学习,感兴趣的朋友可以了解下
    2020-06-06
  • Java锁之阻塞锁介绍和代码实例

    Java锁之阻塞锁介绍和代码实例

    这篇文章主要介绍了Java锁之阻塞锁介绍和代码实例,阻塞锁与自旋锁不同,它改变了线程的运行状态,需要的朋友可以参考下
    2014-09-09
  • SpringBoot工程搭建打包、启动jar包和war包的教程图文详解

    SpringBoot工程搭建打包、启动jar包和war包的教程图文详解

    这篇文章主要介绍了SpringBoot工程搭建打包、启动jar包和war包的教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • java使用apache commons连接ftp修改ftp文件名失败原因

    java使用apache commons连接ftp修改ftp文件名失败原因

    这篇文章主要介绍了java使用apache commons连接ftp修改ftp文件名失败原因解析,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • Java项目开发命名规范(动力节点Java学院整理)

    Java项目开发命名规范(动力节点Java学院整理)

    定义这个规范的目的是让项目中所有的文档都看起来像一个人写的,增加可读性,减少项目组中因为换人而带来的损失。下面给大家分享java开发命名规范,一起看看吧
    2017-03-03
  • 使用Java高效将CSV转换为Excel的实现方法

    使用Java高效将CSV转换为Excel的实现方法

    在日常的数据处理和分析工作中,CSV文件因其轻量级和通用性而广受欢迎,然而,当我们需要进行复杂的数据分析或利用Excel强大的图表和公式功能时,将CSV数据转换为Excel文件就成了开发者们常见的需求和痛点,本文将深入探讨如何利用Java高效地将CSV转换为Excel
    2025-08-08
  • SpringBoot多环境日志配置方式

    SpringBoot多环境日志配置方式

    SpringBoot 默认使用LogBack日志系统,默认情况下,SpringBoot项目的日志只会在控制台输入,本文给大家介绍SpringBoot多环境日志配置方式,需要的朋友可以参考下
    2024-08-08
  • Spring Boot常见外部配置文件方式详析

    Spring Boot常见外部配置文件方式详析

    这篇文章主要给大家介绍了关于Spring Boot常见外部配置文件方式的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用Spring Boot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-07-07
  • gRPC实践之proto及Maven插件概念及使用详解

    gRPC实践之proto及Maven插件概念及使用详解

    这篇文章主要为大家介绍了gRPC实践之proto及Maven插件概念及使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04

最新评论