日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

springboot-2.3.x最新版源碼閱讀環(huán)境搭建(基于gradle構建)

瀏覽:182日期:2023-08-22 13:52:25

一、前言

跟很多小伙伴聊天,發(fā)現(xiàn)一個嚴重的問題,很多小伙伴橫向發(fā)展的貌似很不錯,很多技術都能說出一二,但是如果在某個技術上深挖一下就不行了,問啥啥不會。就拿springboot來說,很多同學止步于springboot的應用,再往深處就一問三不知了,那么如何破局呢?smart哥認為最好的辦法就是直搗黃龍,要把一個技術理解透了,聽別人講一萬遍原理,不如自己撕一遍源碼。

要閱讀源碼那就首先得先搭建源碼閱讀環(huán)境,那么本篇文章就來介紹下Spring Boot的源碼環(huán)境搭建。 鑒于spring團隊已經(jīng)全面拋棄maven構建工具而選用gradle來構建,而且網(wǎng)上目前看來還沒有文章介紹springboot最新版2.3.x的gradle構建(絕大多數(shù)都是maven構建),那么本篇文章就是基于gradle來構建最新版springboot2.3.2的源碼閱讀環(huán)境。

二、環(huán)境準備

1、git

拉取源碼使用

2、jdk8及以上

一般小伙伴機器上都已經(jīng)裝好了

springboot-2.3.x最新版源碼閱讀環(huán)境搭建(基于gradle構建)

3、gradle6.5.1

打開 https://services.gradle.org/distributions/ 選擇最新版本:gradle-6.5.1-all.zip(all版本是帶源碼的)

springboot-2.3.x最新版源碼閱讀環(huán)境搭建(基于gradle構建)

下載解壓后目錄結構如下:

springboot-2.3.x最新版源碼閱讀環(huán)境搭建(基于gradle構建)

設置環(huán)境變量:

springboot-2.3.x最新版源碼閱讀環(huán)境搭建(基于gradle構建)

springboot-2.3.x最新版源碼閱讀環(huán)境搭建(基于gradle構建)

完成后打開cmd,執(zhí)行

gradle -v

springboot-2.3.x最新版源碼閱讀環(huán)境搭建(基于gradle構建)

表示已經(jīng)安裝成功,版本為6.5.1

4、idea2020.1.2

(網(wǎng)上很多朋友表示idea2020之前的版本導入時始終有問題,建議升級到2020.1版本,smart哥當前使用的就是2020.1.2版本)

不得不說2020.1.2版本真香,之前的版本很多bug都在2020.1中得到修復。那些個bug真的會讓人奔潰。

注意:springboot源碼構建、編譯及冒煙測試會非常的耗內(nèi)存,建議內(nèi)存不足16g的小伙伴升級下機器內(nèi)存,最少16g。

三、下載源碼

從官方倉庫 https://github.com/spring-projects/spring-boot Fork 出屬于自己的倉庫。

為什么要 Fork ?既然開始閱讀、調(diào)試源碼,我們可能會寫一些注釋,有了自己的倉庫,可以進行自由的提交。 本文使用的 Springboot 版本為最新的 2.3.x的分支代碼 (2.3.2.BUILD-SNAPSHOT)。 使用 git 從 Fork 出來的倉庫拉取代碼,注意這里為什么不拉取master分支呢?

因為smart哥剛開始就是拉取的master分支,但是master分支依賴的spring版本為spring-5.3.0-M1版本,該版本非穩(wěn)定版本,而且編譯到最后會出現(xiàn)問題,報一些spring模塊的5.3.0-M1.jar包不存在或無法下載等一些莫名其妙的錯誤, 所以我這邊拉取的是2.3.x分支,這個分支依賴的spring版本為5.2.7.RELEASE版本。所以我就git clone 2.3.x分支到本地,然后再導入idea中。

具體過程如下:

1、打開 https://github.com/spring-projects/spring-boot,點擊右上角Fork即可,這樣就把spring倉庫fork到自己的倉庫中了。

springboot-2.3.x最新版源碼閱讀環(huán)境搭建(基于gradle構建)

2、選擇一個目錄,我的是E:myproIdeaProjectsspring-boot-2.3.1,空白處右擊Git Bash Here

執(zhí)行:

git clone -b 2.3.x https://github.com/spring-projects/spring-boot.gi

下載到本地

springboot-2.3.x最新版源碼閱讀環(huán)境搭建(基于gradle構建)

四、開始構建

1、打開idea后,【File】->【Open…】,打開剛拉取的spring-boot源碼,點擊ok即可打開,如下圖:

springboot-2.3.x最新版源碼閱讀環(huán)境搭建(基于gradle構建)

打開之后,gradle會自動構建,開始下載gradle-6.4-bin.zip工具包,idea中還有一些地方需要設置,所以先不構建,點擊取消,如下圖:

springboot-2.3.x最新版源碼閱讀環(huán)境搭建(基于gradle構建)

取消后如下圖:

springboot-2.3.x最新版源碼閱讀環(huán)境搭建(基于gradle構建)

2、選擇【File】->【project Structure…】,打開后點擊左側Project,然后Project SDK選擇java version 1.8,Project language level選擇8,如下圖:

springboot-2.3.x最新版源碼閱讀環(huán)境搭建(基于gradle構建)

接下來,Modules選擇Project SDK 1.8,點擊ok即可

springboot-2.3.x最新版源碼閱讀環(huán)境搭建(基于gradle構建)

3、設置完畢之后,打開工程下的gradle->wrapper下的gradle-wrapper.properties文件,注釋掉:

#distributionUrl=https://services.gradle.org/distributions/gradle-6.4-bin.zip

換成本地的gradle-6.5.1-all.zip,這個版本是當前最新版,而且是帶源碼的。

distributionUrl=file:///e:/dev_env/gradle-6.5.1-all.zip

如圖所示:

springboot-2.3.x最新版源碼閱讀環(huán)境搭建(基于gradle構建)

4、修改工程下的buildSrc下的build.gradle文件,找到如下代碼段,添加阿里云鏡像(不添加的話幾個小時也構建不完)

repositories { //加上阿里云鏡像 maven { url ’https://maven.aliyun.com/nexus/content/groups/public/’ } maven { url ’https://maven.aliyun.com/nexus/content/repositories/jcenter’ } maven { url 'https://repo.spring.io/plugins-release' } mavenCentral() gradlePluginPortal() maven { url 'https://repo.spring.io/release' }}

如圖:

springboot-2.3.x最新版源碼閱讀環(huán)境搭建(基于gradle構建)

5、繼續(xù)修改同目錄下的settings.gradle文件,這是全局配置文件,也要加上阿里云鏡像,找到如下代碼塊,修改如下:

pluginManagement { repositories { //加上阿里云鏡像 maven { url ’https://maven.aliyun.com/nexus/content/groups/public/’ } maven { url ’https://maven.aliyun.com/nexus/content/repositories/jcenter’ } maven { url 'https://repo.spring.io/plugins-release' } mavenCentral() gradlePluginPortal() } ......}

如下圖所示:

springboot-2.3.x最新版源碼閱讀環(huán)境搭建(基于gradle構建)

6、修改工程根目錄下的build.gradle文件(前面修改的是buildSrc下的,注意區(qū)別),同樣是加上阿里云鏡像,紅框中的代碼需要全部加上,且只能加在該文件頭部。

buildscript { repositories { maven { url ’https://maven.aliyun.com/nexus/content/groups/public/’ } maven { url ’https://maven.aliyun.com/nexus/content/repositories/jcenter’ } maven { url 'https://repo.spring.io/plugins-release' } }}

springboot-2.3.x最新版源碼閱讀環(huán)境搭建(基于gradle構建)

還是這個文件,繼續(xù)修改,往下找到如下圖的代碼塊,加上阿里云鏡像

allprojects { group 'org.springframework.boot' repositories { //阿里云鏡像 maven { url ’https://maven.aliyun.com/nexus/content/groups/public/’ } maven { url ’https://maven.aliyun.com/nexus/content/repositories/jcenter’ } mavenCentral() ...... } ......}

springboot-2.3.x最新版源碼閱讀環(huán)境搭建(基于gradle構建)

7、繼續(xù)修改根目錄下的全局配置文件settings.gradle,同樣是加上阿里云鏡像

pluginManagement { repositories { //阿里云鏡像 maven { url ’https://maven.aliyun.com/nexus/content/groups/public/’ } maven { url ’https://maven.aliyun.com/nexus/content/repositories/jcenter’ } mavenCentral() ...... } ......}

如下圖所示:

springboot-2.3.x最新版源碼閱讀環(huán)境搭建(基于gradle構建)

8、ok,到此才可以開始愉快的構建,如下圖,構建中。。。

springboot-2.3.x最新版源碼閱讀環(huán)境搭建(基于gradle構建)

經(jīng)過一段時間之后,構建快結束的時候,執(zhí)行test這一步的時候,出現(xiàn)問題(當然這一步可以省略,但是smart哥先天的強迫癥不允許),于是開始破解之法。

springboot-2.3.x最新版源碼閱讀環(huán)境搭建(基于gradle構建)

這個問題乍一看是無從入手的,然后往上找到錯誤提示:

file:///E:/mypro/IdeaProjects/spring-boot-2.3.1/spring-boot/buildSrc/build/reports/tests/test/classes/org.springframework.boot.build.testing.TestFailuresPluginIntegrationTests.html#multiProjectParallel()

于是拷貝這一段地址在瀏覽器打開,如下圖所示:

是一段測試報告

springboot-2.3.x最新版源碼閱讀環(huán)境搭建(基于gradle構建)

繼續(xù)往下查找,找到問題關鍵所在,heap堆內(nèi)存沒有足夠的空間,錯誤如下:

springboot-2.3.x最新版源碼閱讀環(huán)境搭建(基于gradle構建)

9、我本機是16g內(nèi)存,于是修改idea的bin目錄下的idea.exe.vmoptions文件,修改idea的初始化內(nèi)存和最大內(nèi)存參數(shù):

-Xms1024m,-Xmx4096m

springboot-2.3.x最新版源碼閱讀環(huán)境搭建(基于gradle構建)springboot-2.3.x最新版源碼閱讀環(huán)境搭建(基于gradle構建)

修改后的文件內(nèi)容如下:

-server-Xms1024m-Xmx4096m-XX:ReservedCodeCacheSize=500m-XX:+UseConcMarkSweepGC-XX:SoftRefLRUPolicyMSPerMB=50-ea-XX:CICompilerCount=2-Dsun.io.useCanonPrefixCache=false-Djdk.http.auth.tunneling.disabledSchemes=''-XX:+HeapDumpOnOutOfMemoryError-XX:-OmitStackTraceInFastThrow-Djdk.attach.allowAttachSelf=true-Dkotlinx.coroutines.debug=off-Djdk.module.illegalAccess.silent=true-Dfile.encoding=UTF-8

10、重新編譯還是報錯,于是打開【File】->【Settings】,【Build,Execution,Deployment】->【Compiler】,Build process heap size(Mbytes)改成2000

springboot-2.3.x最新版源碼閱讀環(huán)境搭建(基于gradle構建)

11、重新編譯還是報錯,繼續(xù)修改buildSrc目錄下的gradle.properties文件,新增如下配置:

#新增如下配置,解決heap堆內(nèi)存空間不夠問題gradlePropertiesProp=gradlePropertiesValuesysProp=shouldBeOverWrittenBySysPropsystemProp.system=systemValueorg.gradle.caching=falseorg.gradle.jvmargs=-Xms2048m -Xmx4096m org.gradle.parallel=trueorg.gradle.daemon=trueorg.gradle.configureondemand=true

重點是:org.gradle.jvmargs=-Xms2048m -Xmx4096m

springboot-2.3.x最新版源碼閱讀環(huán)境搭建(基于gradle構建)

配置完重新構建,編譯,最后還是報空間不足,于是將org.gradle.jvmargs內(nèi)存擴大一倍,如下:初始4g,最大8g

springboot-2.3.x最新版源碼閱讀環(huán)境搭建(基于gradle構建)

修改完再次重新構建,編譯,終于成功!!撒花!!7分10秒,時間還是很快的。

springboot-2.3.x最新版源碼閱讀環(huán)境搭建(基于gradle構建)

五、源碼測試

1、在springboot-boot-tests模塊下隨便找一個spring-boot-smoke-test-hibernate52工程來進行冒煙測試,打開Hibernate52Application.java文件,直接執(zhí)行main方法啟動springboot,成功!

console中出現(xiàn)我們熟悉的圖標。

springboot-2.3.x最新版源碼閱讀環(huán)境搭建(基于gradle構建)

2、下面進行單元測試,還是在spring-boot-smoke-test-hibernate52下的test目錄中,打開Hibernate52ApplicationTests.java文件,在contextLoads()方法中加一段打印信息:

@Testvoid contextLoads() { System.out.println('hibernate test....');}

執(zhí)行Run Test,OK,測試也是沒有問題的,測試結果如下圖:

springboot-2.3.x最新版源碼閱讀環(huán)境搭建(基于gradle構建)

至此,spring-boot的源碼閱讀環(huán)境全部搭建并測試完畢

六、問題及解決方案

1、TestFailuresPluginIntegrationTests > multiProjectParallel() FAILEDjava.lang.AssertionError at TestFailuresPluginIntegrationTests.java:88

springboot-2.3.x最新版源碼閱讀環(huán)境搭建(基于gradle構建)

該問題是junit包下載超時,可能是我機器網(wǎng)絡抽風了,刷新重新構建即可!

2、spring-websocket-5.3.0-M1.jar包找不到

如果小伙伴們拉取的是master分支,就像我在本文開頭講的那樣,此時報spring-websocket-5.3.0-M1.jar包找不到,提示在下面的地址中查找。

但是 https://maven.aliyun.com/repository/grails-core/org/springframework/spring-websocket/5.3.0-M1/spring-websocket-5.3.0-M1.jar

這個鏈接明明是可以下載的,所以smart哥一頭霧水,懵圈了很久。

springboot-2.3.x最新版源碼閱讀環(huán)境搭建(基于gradle構建)

經(jīng)過smart哥多次刷新重新下還是無法下載,于是拋棄master分支,轉而拉取2.3.x分支。

springboot-2.3.x最新版源碼閱讀環(huán)境搭建(基于gradle構建)

結語

到此這篇關于springboot-2.3.x最新版源碼閱讀環(huán)境搭建(基于gradle構建)的文章就介紹到這了,更多相關springboot源碼閱讀環(huán)境搭建內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
一二三区精品| 99国产精品私拍| 99亚洲视频| 在线一区免费观看| 国产亚洲综合精品| 视频一区视频二区中文| 久久xxxx精品视频| 亚洲精一区二区三区| 午夜在线一区二区| 中文字幕日本一区二区| 97成人在线| 你懂的国产精品| 在线天堂资源www在线污| 丝袜美腿诱惑一区二区三区| 久久久久免费av| 国产视频一区欧美| 综合精品一区| 欧美色图一区| 老鸭窝亚洲一区二区三区| 亚洲毛片在线| 国产精品a级| 成人亚洲一区二区| 视频福利一区| 中文亚洲欧美| 青青在线精品| 91综合网人人| 亚洲少妇诱惑| 国产欧美高清| 日本久久成人网| 在线亚洲观看| 国产亚洲欧美日韩在线观看一区二区 | 国产精品magnet| 久久久久久久欧美精品| 日本久久黄色| av一区二区高清| 在线精品亚洲| 偷拍亚洲精品| 国产精品精品国产一区二区| 亚洲精品99| 国产欧美日韩在线观看视频| 国产va免费精品观看精品视频| 久久高清精品| 日韩和欧美一区二区三区| 精品久久99| 久久av一区二区三区| 在线观看视频免费一区二区三区| 一区二区国产在线观看| 精品欧美日韩精品| 国产日产精品_国产精品毛片 | 精品精品99| 高清久久一区| 国产日产精品_国产精品毛片 | 久久国产生活片100| 日韩免费久久| 国产精品videosex极品| 亚洲伊人精品酒店| 伊人久久亚洲| 久久电影一区| 综合色一区二区| 国产午夜久久av| 日韩和欧美的一区| 欧美在线91| 久久亚洲国产精品一区二区| 午夜欧美视频| 亚洲精品少妇| 国产乱论精品| 欧美羞羞视频| 午夜欧美精品久久久久久久| 香蕉久久99| 丝袜美腿一区二区三区| 麻豆亚洲精品| 日韩av一区二| 国产日韩一区| 欧美国产另类| 日韩精品麻豆| 欧美午夜不卡| 国产亚洲高清视频| 日本不卡一二三区黄网| 高清av一区| 人人精品人人爱| av高清一区| 国产欧美一级| 综合激情一区| 最新日韩欧美| 九九在线精品| 国产第一亚洲| 久久精品国产精品亚洲毛片| 婷婷五月色综合香五月| 噜噜噜久久亚洲精品国产品小说| 亚洲v在线看| 激情中国色综合| 日本国产亚洲| 亚洲尤物av| 蜜桃视频一区二区| 日韩一区二区三区免费视频| 亚洲欧美日韩综合国产aⅴ| 日韩高清不卡| 97精品97| 欧美色图国产精品| 在线视频观看日韩| 亚洲精品影院在线观看| 国产乱论精品| 亚洲精品在线国产| 夜久久久久久| 黄色成人在线网址| 亚洲二区在线| 高清一区二区三区| 欧美激情综合| 国产精品一区二区精品视频观看 | 亚洲一区网站| 偷拍欧美精品| 欧美大黑bbbbbbbbb在线| 欧美二三四区| 成人福利av| 中文字幕成在线观看| 国产96在线亚洲| 国产精品成人a在线观看| 精品久久视频| 老司机精品在线| 精品九九久久| 日韩在线综合| 99热国内精品| 宅男噜噜噜66国产日韩在线观看| 一区视频在线| 亚洲综合不卡| 在线观看一区| 日本aⅴ亚洲精品中文乱码 | 国产精品色婷婷在线观看| 日本国产一区| 亚洲精品精选| 欧美亚洲一区二区三区| 国产色99精品9i| 国产福利亚洲| 三上亚洲一区二区| 亚洲不卡av不卡一区二区| 国精品一区二区| 日韩精品一级中文字幕精品视频免费观看 | 色偷偷偷在线视频播放| 福利在线免费视频| 国产99亚洲| 欧美一区=区| 日韩国产一区二| 久久精品国产亚洲一区二区三区| 福利一区二区免费视频| 欧产日产国产精品视频| 99久久激情| 蜜桃久久av一区| 欧美偷窥清纯综合图区| 精品三级av在线导航| 欧美二三四区| 影音先锋国产精品| 亚洲精品一二| 久久久久亚洲精品中文字幕| 日韩欧美中文| 日韩精品一区第一页| 国产剧情一区| 日韩欧美精品一区| 蜜臀久久久99精品久久久久久| 欧美久久香蕉| 日韩大片在线| 亚洲欧美日韩国产综合精品二区| 日韩精品第一| 国产精品久久久久蜜臀 | 蜜臀a∨国产成人精品| 国产亚洲一区二区三区不卡| 国产精品13p| 99热免费精品| 国产精品免费99久久久| 色88888久久久久久影院| 蜜臀91精品一区二区三区| 另类小说一区二区三区| 视频一区二区中文字幕| 美女精品一区二区| 午夜欧美精品久久久久久久| 国产亚洲高清一区| 久久三级视频| 日韩成人午夜精品| 久久久水蜜桃av免费网站| 亚洲精品进入| 国产成人免费精品| 日韩在线一二三区| 国产66精品| 亚洲精品在线二区| 韩国三级一区| 日本在线一区二区三区| 蜜桃av在线播放| 7777精品| 日韩av首页| 国产欧美日韩精品一区二区免费| 日韩三区在线| 日韩成人午夜精品| 1000部精品久久久久久久久| 国产日韩亚洲欧美精品| 日韩精品欧美| 国产精品一区二区三区美女| 在线综合视频| 日韩精品免费一区二区三区| 国产精品欧美三级在线观看| 午夜欧美精品| 福利一区在线|