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

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

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

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

一、前言

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

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

二、環境準備

1、git

拉取源碼使用

2、jdk8及以上

一般小伙伴機器上都已經裝好了

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

3、gradle6.5.1

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

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

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

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

設置環境變量:

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

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

完成后打開cmd,執行

gradle -v

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

表示已經安裝成功,版本為6.5.1

4、idea2020.1.2

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

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

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

三、下載源碼

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

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

因為smart哥剛開始就是拉取的master分支,但是master分支依賴的spring版本為spring-5.3.0-M1版本,該版本非穩定版本,而且編譯到最后會出現問題,報一些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最新版源碼閱讀環境搭建(基于gradle構建)

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

執行:

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

下載到本地

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

四、開始構建

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

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

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

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

取消后如下圖:

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

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

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

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

springboot-2.3.x最新版源碼閱讀環境搭建(基于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最新版源碼閱讀環境搭建(基于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最新版源碼閱讀環境搭建(基于gradle構建)

5、繼續修改同目錄下的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最新版源碼閱讀環境搭建(基于gradle構建)

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

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最新版源碼閱讀環境搭建(基于gradle構建)

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

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最新版源碼閱讀環境搭建(基于gradle構建)

7、繼續修改根目錄下的全局配置文件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最新版源碼閱讀環境搭建(基于gradle構建)

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

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

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

springboot-2.3.x最新版源碼閱讀環境搭建(基于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最新版源碼閱讀環境搭建(基于gradle構建)

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

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

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

-Xms1024m,-Xmx4096m

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

修改后的文件內容如下:

-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最新版源碼閱讀環境搭建(基于gradle構建)

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

#新增如下配置,解決heap堆內存空間不夠問題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最新版源碼閱讀環境搭建(基于gradle構建)

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

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

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

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

五、源碼測試

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

console中出現我們熟悉的圖標。

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

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

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

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

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

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

六、問題及解決方案

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

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

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

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最新版源碼閱讀環境搭建(基于gradle構建)

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

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

結語

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

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩欧美综合| 在线一区免费| 成人看片网站| 久久精品国产99国产精品| 精品免费av| 国内精品麻豆美女在线播放视频| 国产精品片aa在线观看| 国产精品17p| 国产在线看片免费视频在线观看| 国产精品久久久久久av公交车| 日韩在线a电影| 亚洲专区视频| 首页亚洲欧美制服丝腿| 免费精品视频最新在线| 欧美亚洲二区| 国产精品中文字幕制服诱惑| 亚洲一区二区三区高清| 国产精品免费精品自在线观看| 亚洲欧美日韩国产| 一二三区精品| 国产成人免费精品| 中文字幕日本一区二区| 亚洲2区在线| 国产第一亚洲| 国产专区精品| 91精品久久久久久久久久不卡| 久久av在线| 男人操女人的视频在线观看欧美| 亚洲日韩中文字幕一区| 久久超碰99| 精品国产一区二区三区性色av| 久久精品72免费观看| 国产在线一区不卡| 福利在线免费视频| 久久婷婷亚洲| 久久wwww| 日韩av在线播放网址| 亚洲91久久| 日韩精品亚洲aⅴ在线影院| 日韩精品视频网| 国产毛片精品| 日韩午夜高潮| 日韩成人在线看| 精品国产一级| 午夜一级在线看亚洲| 日韩精品高清不卡| 欧美日韩精品一区二区三区视频| а√在线中文在线新版| www.九色在线| 国产亚洲在线观看| 国产伊人久久| 婷婷中文字幕一区| 婷婷精品在线| 国产高清久久| 欧美一级一区| 国产超碰精品| 国产日韩三级| 成人日韩精品| 日本精品另类| 黑丝美女一区二区| 日韩精品一级| 国产精品chinese| 免费久久99精品国产| 麻豆免费精品视频| 蜜臀va亚洲va欧美va天堂| 91视频久久| 伊人久久大香伊蕉在人线观看热v| 日韩深夜视频| 日韩欧美中文字幕在线视频| 欧美亚洲日本精品| 欧美亚洲tv| 99国产精品99久久久久久粉嫩| 国产精品任我爽爆在线播放| 日本少妇一区二区| 久久蜜桃资源一区二区老牛| 欧美在线91| 合欧美一区二区三区| 国产日韩亚洲| 国产亚洲网站| 国产精品97| 久久伊人久久| 亚洲人成精品久久久| 成人av动漫在线观看| 国产精品久久乐| 性欧美长视频| 久久视频国产| 国产乱论精品| 香蕉久久一区| 国产亚洲毛片在线| 精品成av人一区二区三区| 国产精品一区二区三区www| 91日韩免费| 久久精品99国产国产精| 少妇精品在线| 亚洲黄色影院| 日本欧美不卡| 日本а中文在线天堂| 国产视频一区二| 亚洲一区欧美| 亚洲一区二区毛片| 肉色欧美久久久久久久免费看| 国产伦理久久久久久妇女| 亚洲婷婷丁香| 日韩午夜黄色| 欧美精品激情| 日韩高清中文字幕一区二区| 蜜桃久久久久久久| 国产中文一区| 国产一二在线播放| 国产精品麻豆成人av电影艾秋 | 女主播福利一区| 国产精品视频3p| 在线免费观看亚洲| 一本一道久久a久久精品蜜桃| 亚洲1234区| 牛牛精品成人免费视频| 日本一区二区三区中文字幕| 久久国产精品99国产| 久久精品99久久无色码中文字幕| 理论片午夜视频在线观看| 国产精品一区二区美女视频免费看 | av不卡在线| 欧美天堂视频| 国产伦理一区| 国产精品三级| 国产一精品一av一免费爽爽| 蜜桃视频一区二区三区| 亚洲综合在线电影| 国产精品传媒麻豆hd| 亚欧成人精品| 日韩三级久久| 天堂av在线一区| 蜜芽一区二区三区| 激情丁香综合| 免费看欧美美女黄的网站| 日韩久久精品| 中文字幕人成乱码在线观看| 久久中文字幕一区二区三区| 国产一区二区三区精品在线观看| 在线天堂资源www在线污| 国产一区二区色噜噜| 日韩在线欧美| 婷婷激情一区| 国产精品日韩久久久| 男人操女人的视频在线观看欧美| 黄色日韩在线| 免费在线观看成人| 国产伦精品一区二区三区千人斩 | 国产精品毛片一区二区在线看| 国产v日韩v欧美v| 精品一区二区三区中文字幕视频| 欧美日韩一区二区三区在线电影| 国产乱码精品一区二区亚洲| 成人av三级| 日韩三区免费| 免费黄色成人| 亚洲香蕉视频| 国产亚洲欧美日韩在线观看一区二区| 国模大尺度视频一区二区| 人人香蕉久久| 久久精品国产99国产精品| 一区二区三区四区在线看| 亚洲二区在线| 欧美成人精品| 国产韩日影视精品| 高清精品久久| 久久精品成人| 夜久久久久久| 国产农村妇女精品一二区| 五月国产精品| 国产欧美一区二区三区精品酒店| 日韩av一级| 国产亚洲一级| 国产精品视频3p| av资源中文在线| 日本麻豆一区二区三区视频| 国产精品chinese| 欧美国产91| 热久久久久久| 在线精品亚洲欧美日韩国产| 午夜久久久久| 国产欧美日韩亚洲一区二区三区| 久久中文字幕二区| 久久男人av资源站| 日韩成人精品一区| 夜夜嗨一区二区三区| 国产精品欧美日韩一区| 亚洲成人日韩| 久久久精品国产**网站| 九九综合在线| 久久精品女人| 久久一二三区| 精品国产鲁一鲁****| 尹人成人综合网| 国产91欧美| 一区久久精品| 国产精品主播在线观看| av一区二区高清| 国产精品二区不卡| 热久久久久久久|