欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java項(xiàng)目全面升級轉(zhuǎn)化經(jīng)驗(yàn)(涉及JDK、Spring?boot版本及依賴管理架構(gòu))

 更新時(shí)間:2025年09月12日 11:11:28   作者:Hi-Jimmy  
在軟件開發(fā)領(lǐng)域,項(xiàng)目升級是一個(gè)必然的過程,隨著技術(shù)的不斷進(jìn)步和業(yè)務(wù)需求的變化,對于舊項(xiàng)目的升級和優(yōu)化已成為許多企業(yè)必須面對的問題,這篇文章主要介紹了Java項(xiàng)目全面升級轉(zhuǎn)化的相關(guān)資料,包括JDK、Spring?boot版本及依賴管理架構(gòu),需要的朋友可以參考下

這段時(shí)間有個(gè)艱巨的任務(wù),把早期項(xiàng)目改造為新版本架構(gòu),涉及到JDK版本、Spring boot版本以及依賴管理架構(gòu)改造。

需求

  • 將依賴管理從Gradle 轉(zhuǎn)換為 Maven

  • 將 JDK 1.8 版本升級到 17

  • 將Spring Boot 2.7.13升級到 3.5.0

計(jì)劃

為了更順暢的完成以上改造,大體做了以下計(jì)劃:

步驟內(nèi)容
1Gradle 轉(zhuǎn)換為 Maven 構(gòu)建
2升級 JDK1.8 版本到 17
3升級 Spring Boot 2.7.13到 3.5.0
4源碼兼容性調(diào)整
5測試和驗(yàn)證

前置準(zhǔn)備

  1. 確保項(xiàng)目可以正常構(gòu)建并運(yùn)行
  2. 確保項(xiàng)目依賴完整并已去除無用依賴
  3. 確認(rèn)好項(xiàng)目的依賴各類版本

一、Gradle 轉(zhuǎn)換為 Maven

依賴管理作為第一步,因?yàn)橄啾戎赂膭幼钚?,基本不牽扯代碼修改。同時(shí),最開始切換Maven,也為之后升級過程中可能存在的依賴版本修改做準(zhǔn)備。

1.pom轉(zhuǎn)化

  • 打開 IDEA,右鍵項(xiàng)目根目錄 → Add Framework Support → 勾選 Maven。
  • IDEA 會生成 pom.xml 文件。
  • 手動遷移 build.gradle 中的依賴、插件信息。

如果使用社區(qū)版Idea:
手動創(chuàng)建pom并逐一將所有build.gradle轉(zhuǎn)化為pom.xml。

2.移除所有g(shù)radle相關(guān)文件

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

3.移除.idea目錄并重啟idea

4.關(guān)鍵步驟

在idea中右鍵根目錄pom.xml文件選擇“添加項(xiàng)目為maven”。

注意:
由于maven與gradle的很多寫法不同,在實(shí)際加載依賴時(shí)會提示各種錯誤,一般需要額外注意,對指定目錄依賴的引用,并注意對Lombok的編譯時(shí)排除的設(shè)定。

指定目錄依賴的引用
例如:

<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的編譯時(shí)排除

例如:

<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.修改項(xiàng)目SDK版本

2.修改平臺SDK版本

3.修改JDK版本變化帶來的語法區(qū)別

一些寫法上的改變,如:

  • 一些廢棄的寫法
  • 一些var類型的聲明
  • 依賴版本的變化
    需要按需調(diào)整,不再累述。

三、Spring boot升級

相比SDK版本變化,Spring boot的升級帶來的代碼修改是最大的。

1.解決版本依賴問題

注意:版本的取舍很重要,哪些需要升級,哪些需要保留低版本,需要根據(jù)項(xiàng)目情況判斷,一般以spring boot為核心的組件都應(yīng)該做升級

2.解決新版本寫法

例如:

javax.xml.bind → jakarta.xml.bind

3.解決缺失依賴問題

升級后,一些原有的依賴可能會被舍棄,需要手動加上,如:
zip4j 2.x 版本中,包結(jié)構(gòu)已完全重構(gòu)net.lingala.zip4j.core.* 目錄被移除。如果你升級了 zip4j 到 2.x,就找不到這個(gè)類。

四、代碼兼容性調(diào)整

遷移過程中出現(xiàn)的報(bào)錯和異常:

1.xml報(bào)錯

自 JDK 9 開始,javax.xml.bind 所在的 JAXB(Java Architecture for XML Binding)模塊被移出 JDK 默認(rèn)類庫,在 JDK 11 及更高版本中已徹底移除。

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

改為:

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

2.升級mybitasPlus后,分頁報(bào)錯

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

改為:

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

3.已經(jīng)被棄用的CommonsMultipartFile

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

改為:

import org.springframework.web.multipart.MultipartFile;

4.已經(jīng)棄用的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字段相關(guān)修改

@TableField(strategy = FieldStrategy.IGNORED)

改為:

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

五、測試與驗(yàn)證

1.逐一build每個(gè)項(xiàng)目

務(wù)必使用maven重新導(dǎo)入所有依賴,并重新進(jìn)行build操作,如果這個(gè)過程無誤,則證明本次升級成功,如有問題,按需解決

2.依賴關(guān)系確認(rèn)

還需確認(rèn)轉(zhuǎn)化后的項(xiàng)目的樹狀結(jié)構(gòu)是否與之前一致,即父子關(guān)系不能變

3.運(yùn)行項(xiàng)目

運(yùn)行項(xiàng)目進(jìn)行開發(fā)環(huán)境測試,確保模塊正常

4.打包測試

打包進(jìn)行測試環(huán)境測試,以確保升級后功能可正常跑通

總結(jié)

到此這篇關(guān)于Java項(xiàng)目全面升級轉(zhuǎn)化經(jīng)驗(yàn)的文章就介紹到這了,更多相關(guān)Java項(xiàng)目全面升級內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • spring使用RedisTemplate操作Redis數(shù)據(jù)庫

    spring使用RedisTemplate操作Redis數(shù)據(jù)庫

    這篇文章主要介紹了spring使用RedisTemplate操作Redis數(shù)據(jù)庫,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Spring實(shí)戰(zhàn)之使用c:命名空間簡化配置操作示例

    Spring實(shí)戰(zhàn)之使用c:命名空間簡化配置操作示例

    這篇文章主要介紹了Spring實(shí)戰(zhàn)之使用c:命名空間簡化配置操作,結(jié)合實(shí)例形式詳細(xì)分析了Spring使用c:命名空間簡化配置的相關(guān)接口與配置操作技巧,需要的朋友可以參考下
    2019-12-12
  • Springboot整合AOP和redis的示例詳解

    Springboot整合AOP和redis的示例詳解

    本文主要介紹了Springboot整合AOP和Redis的詳細(xì)過程,包括AOP的依賴引入和默認(rèn)配置屬性,日志切面格式以及Redis的自動配置和連接池使用,總結(jié)了在多線程環(huán)境下,選擇合適的連接方式和客戶端是非常重要,感興趣的朋友一起看看吧
    2024-11-11
  • SpringBoot+Vue 前后端接口交互的項(xiàng)目實(shí)踐

    SpringBoot+Vue 前后端接口交互的項(xiàng)目實(shí)踐

    Spring Boot和Vue可以實(shí)現(xiàn)高效、安全的前后端接口交互,實(shí)際開發(fā)中應(yīng)根據(jù)項(xiàng)目需求選擇合適的傳參方式、安全策略和性能優(yōu)化方案,具有一定的感興趣的可以了解一下
    2025-07-07
  • Spring Boot管理用戶數(shù)據(jù)的操作步驟

    Spring Boot管理用戶數(shù)據(jù)的操作步驟

    SpringBoot結(jié)合Thymeleaf模板引擎,可以快速搭建Web應(yīng)用,介紹了使用SpringBoot處理JSON數(shù)據(jù)的基本過程,包括創(chuàng)建實(shí)體類、視圖頁面和控制器,通過這些步驟,即可完成基于SpringBoot和Thymeleaf的簡單Web開發(fā),感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • MyBatis自定義映射關(guān)系和關(guān)聯(lián)查詢實(shí)現(xiàn)方法詳解

    MyBatis自定義映射關(guān)系和關(guān)聯(lián)查詢實(shí)現(xiàn)方法詳解

    這篇文章主要介紹了MyBatis自定義映射關(guān)系和關(guān)聯(lián)查詢實(shí)現(xiàn)方法,當(dāng)POJO屬性名與數(shù)據(jù)庫列名不一致時(shí),需要自定義實(shí)體類和結(jié)果集的映射關(guān)系,在MyBatis注解開發(fā)中,使用@Results定義并使用自定義映射,使用 @ResultMap使用自定義映射
    2023-04-04
  • Java實(shí)現(xiàn)AC自動機(jī)全文檢索示例

    Java實(shí)現(xiàn)AC自動機(jī)全文檢索示例

    本篇文章主要介紹了Java實(shí)現(xiàn)AC自動機(jī)全文檢索示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-02-02
  • 解決idea不顯示Services工具欄的問題

    解決idea不顯示Services工具欄的問題

    這篇文章主要介紹了解決idea不顯示Services工具欄的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Spring?Boot?+?EasyExcel?+?SqlServer?進(jìn)行批量處理數(shù)據(jù)的高效方法

    Spring?Boot?+?EasyExcel?+?SqlServer?進(jìn)行批量處理數(shù)據(jù)的高效方法

    在日常開發(fā)和工作中,我們可能要根據(jù)用戶上傳的文件做一系列的處理,本篇文章就以Excel表格文件為例,主要介紹了Spring?Boot?+?EasyExcel?+?SqlServer?進(jìn)行批量處理數(shù)據(jù)的高效方法,需要的朋友可以參考下
    2024-06-06
  • 簡單易用的Spring?Boot郵件發(fā)送demo

    簡單易用的Spring?Boot郵件發(fā)送demo

    本文將介紹如何使用Spring?Boot發(fā)送郵件,我們將演示如何配置SMTP郵件服務(wù)器,創(chuàng)建一個(gè)郵件模板,以及如何使用JavaMailSender發(fā)送郵件,我們還將介紹如何測試我們的郵件發(fā)送代碼
    2023-12-12

最新評論