最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MAVEN3.9.x中301問題及解決方法

 更新時間:2025年01月02日 11:37:33   作者:FIN技術(shù)鋪  
本文主要介紹了使用MAVEN3.9.x中301問題及解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

本文主要是針對“構(gòu)建加速”需求交付過程中,針對maven depoy “301”響應碼的現(xiàn)象分析、原因查找、解決方案、技術(shù)改造及驗證的過程。改造之后,支持用戶基于mvnd的構(gòu)建方式,提升代碼構(gòu)建速度。

01、背景

為了提升maven客戶端的構(gòu)建速度,經(jīng)過調(diào)研,了解到mvnd存在以下技術(shù)特性:

  • GraalVM的使用,mvnd使用GraalVM替代了傳統(tǒng)的JVM,使得啟動速度更快,占用的內(nèi)存更少。GraalVM是一個高性能的運行時,它能夠快速啟動,并且具有較低的內(nèi)存占用。這意味著mvnd在啟動和運行時的性能都優(yōu)于使用傳統(tǒng)JVM的mvn。
  • 緩存機制,mvnd對于Maven插件的緩存機制也有所改進。在mvn構(gòu)建過程中,每次構(gòu)建都需要重新加載和編譯所有的Maven插件。而在mvnd中,這些插件被緩存在多個構(gòu)建中,只有當插件的版本發(fā)生變化時,才會重新加載和編譯。

基于以上優(yōu)點,為支持mvnd功能,實現(xiàn)加速構(gòu)建能力,用戶需要將maven版本從3.6.x版本升級到3.9.x版本,用戶升級之后在提交構(gòu)建二進制制品過程當中發(fā)現(xiàn)maven 3.9.x版本的兼容性問題。后續(xù)就兼容性問題進行識別改造,完成需求交付。

02、現(xiàn)象

基于maven3.6.x版本執(zhí)行deploy動作,所構(gòu)建制品可以正常發(fā)布到nexus倉庫。        

基于maven3.9.x版本提交所構(gòu)建制品失敗,收到nexus服務“301”返回碼。

03、分析原因

Figure 1 DEPLOY請求示意

用戶在本地執(zhí)行“mvn deploy” 命令之后,本地開始編譯構(gòu)建制品,構(gòu)建完成之后開始交付所構(gòu)建制品部署到nexus服務,在部署到nexus之前經(jīng)由nginx進行代理,之后上傳到nexus倉庫。

Nginx.conf 配置片段

用戶本地pom.xml配置片段

早期版本根據(jù)護網(wǎng)安全需求,需要把應用的原始請求資源路徑屏蔽掉,在nginx.conf層面進行轉(zhuǎn)發(fā)配置,針對用戶在pomxml當中配置的屏蔽原始路徑之后的倉庫地址進行重定向。

針對maven3.6.x版本的交互過程進行分析

  • 在maven3.6.x版本的場景下,執(zhí)行DEPLOY,觀察到第一次請求打到nginx之后,nginx響應301永久重定向,并且在響應頭location字段返回新的URL地址;
  • Maven3.6.x 拿到301重定向,根據(jù)location的地址,重新發(fā)起請求新的URL;
  • 后續(xù)交互過程以相同方式完成交互,直至deploy完成。

針對maven3.9.x版本的交互過程進行分析

  • 在maven3.9.x場景下,執(zhí)行deploy命令,請求到達nginx之后,給出相同的301響應,并且在響應頭的location當中指定重定向之后的URL;
  • Maven在拿到重定向響應之后,忽略301,直接開啟下一個步驟的請求;
  • 在下一個步驟的交互里面,nginx濤聲依舊……,然后就是我們在cmd上面看到的最終的失敗的執(zhí)行結(jié)果。

04、解決方案及驗證

根據(jù)上面現(xiàn)象分析,經(jīng)過驗證發(fā)現(xiàn)是maven 3.9版本不處理301重定向,根據(jù)這個特性,針對nginx進行改造:

upstream nexus_server {
        server xxx.xxx.xxx.xxx:xxx max_fails=3 fail_timeout=900s weight=10;
    }
server {
        listen       80;
        server_name  test.repo.htsc;
        access_log  /var/log/nginx/access.log  ;
        error_log  /var/log/nginx/access.log  ;
    location /
    {
          # 摘除/nexus或/nexus/content 
       rewrite ^/nexus/content/(.*)$ /$1 last; 
       rewrite ^/nexus/(.*)$ /$1 last; 
       # 將repositories替換為repository 
       rewrite ^/(.*)repositories(.*)$ /$1repository$2 last;     
……
        expires -1;
    }
}

針對nginx.conf進行改造,將rewrite 中permannet 永久重定向調(diào)整為last,在重寫URI之后再次進入locate過濾,直至proxy_pass,將原來依賴客戶端處理301的邏輯調(diào)整為nginx自身完成URI轉(zhuǎn)換和請求處理,改造之后既減少網(wǎng)絡IO,每個請求省了一次交互,又提升了用戶的使用體驗,提升了deploy的效率。

05、結(jié)語

本次改造針對若干主要的用戶使用deploy的存量和增量場景進行兼容,實現(xiàn)mvnd命令的支持,從IO角度的來說,相比于改造前,省去了重定向請求的網(wǎng)絡開銷,客戶端請求次數(shù)減半;從構(gòu)建加速的角度來說,基于maven3.9.x mvnd方式構(gòu)建提升構(gòu)建速度提升10%-20%;有效實現(xiàn)構(gòu)建環(huán)節(jié)的加速增效。

到此這篇關于MAVEN3.9.x中301問題及解決方法的文章就介紹到這了,更多相關MAVEN3.9.x 301問題內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java?Socket實現(xiàn)聊天室功能

    Java?Socket實現(xiàn)聊天室功能

    這篇文章主要為大家詳細介紹了Java?Socket實現(xiàn)聊天室功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • Jmeter基于JDBC請求實現(xiàn)MySQL數(shù)據(jù)庫測試

    Jmeter基于JDBC請求實現(xiàn)MySQL數(shù)據(jù)庫測試

    這篇文章主要介紹了Jmeter基于JDBC請求實現(xiàn)MySQL數(shù)據(jù)庫測試,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • SpringBoot部署到外部Tomcat無法注冊到Nacos服務端的解決思路

    SpringBoot部署到外部Tomcat無法注冊到Nacos服務端的解決思路

    這篇文章主要介紹了SpringBoot部署到外部Tomcat無法注冊到Nacos服務端,本文給大家分享完美解決思路,結(jié)合實例代碼給大家講解的非常詳細,需要的朋友可以參考下
    2023-03-03
  • Spring Security 安全認證的示例代碼

    Spring Security 安全認證的示例代碼

    這篇文章主要介紹了Spring Security 安全認證的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • Springboot?集成spring?cache緩存的解決方案

    Springboot?集成spring?cache緩存的解決方案

    這篇文章主要介紹了Springboot?集成spring?cache緩存,使用緩存最關鍵的一點就是保證緩存與數(shù)據(jù)庫的數(shù)據(jù)一致性,本文給大家介紹最常用的緩存操作模式,對Springboot?集成spring?cache緩存操作流程感興趣的朋友一起看看吧
    2022-06-06
  • Spring配置文件加載路徑之classpath、file、URL?與?Web容器路徑詳解

    Spring配置文件加載路徑之classpath、file、URL?與?Web容器路徑詳解

    這篇文章主要介紹了Spring配置文件加載路徑之classpath、file、URL與Web容器路徑的相關資料,文中通過代碼介紹的非常詳細,對大家學習或者使用Spring具有一定的參考借鑒價值,需要的朋友可以參考下
    2026-03-03
  • 淺談Springboot2.0防止XSS攻擊的幾種方式

    淺談Springboot2.0防止XSS攻擊的幾種方式

    本文主要介紹了Springboot2.0防止XSS攻擊的幾種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • java中throws實例用法詳解

    java中throws實例用法詳解

    在本篇文章里小編給大家分享了一篇關于java中throws實例用法詳解,有興趣的朋友們可以參考學習下。
    2021-01-01
  • Spring項目里將SQL語句寫在.sql文件中的方法

    Spring項目里將SQL語句寫在.sql文件中的方法

    這篇文章主要介紹了Spring項目里如何將SQL語句寫在.sql文件中的方法,文中給出了詳細的介紹和示例代碼,相信對大家的學習或者工作具有一定的參考借鑒價值,有需要的朋友們下面來一起看看吧。
    2017-01-01
  • mybatis resultType自帶數(shù)據(jù)類型別名解讀

    mybatis resultType自帶數(shù)據(jù)類型別名解讀

    MyBatis為了簡化開發(fā),通過org.apache.ibatis.type.TypeAliasRegistry為常見類定義了別名,這些別名包括基本數(shù)據(jù)類型及其數(shù)組、集合類型等,如string對應java.lang.String,int對應java.lang.Integer等,此外,還有特殊前綴的別名如_int對應int類型
    2024-10-10

最新評論

玉树县| 萨迦县| 三原县| 壤塘县| 吴江市| 韶关市| 高碑店市| 天等县| 正宁县| 尼勒克县| 福州市| 平果县| 鄂尔多斯市| 云霄县| 罗山县| 准格尔旗| 密山市| 敦化市| 文登市| 安远县| 如东县| 九龙县| 镶黄旗| 东方市| 化隆| 花莲县| 洛扎县| 泗洪县| 汕尾市| 宿迁市| 中江县| 江华| 周至县| 唐河县| 芮城县| 西吉县| 永兴县| 五台县| 东至县| 临清市| 新田县|