Spring5源碼解析-前奏:本地構建Spring5源碼

来源:https://www.cnblogs.com/coderxiaohei/archive/2019/10/06/11628378.html
-Advertisement-
Play Games

構建環境 macOS 10.13.6 JDK1.8 IntelliJ IDEA 2018.3.6 (Ultimate Edition) "Spring v5.1.9.RELEASE" Gradle 5.5.1。直接使用brew安裝Gradle 源碼構建 1.源碼導入 2.閱讀Spring源碼下的 i ...


構建環境

  • macOS 10.13.6
  • JDK1.8
  • IntelliJ IDEA 2018.3.6 (Ultimate Edition)
  • Spring v5.1.9.RELEASE
  • Gradle 5.5.1。直接使用brew安裝Gradle brew install gradle

源碼構建

1.源碼導入

源碼導入

2.閱讀Spring源碼下的 import-into-idea.md 文件可知

Precompile spring-oxm with ./gradlew :spring-oxm:compileTestJava

compileTestJava

3.修改 gradle/docs.gradle 腳本
一開始嘗試直接構建Spring源碼,在構建的過程中會報錯,通過修改docs.gradle 腳本,註釋 dokkaasciidoctor

修改docs.gradle 腳本

4.源碼構建

源碼構建1

等了好長好長的時間,終於構建完成了。

源碼構建2

5.在Spring項目中新增一個自己的module,嘗試運行hello world,引入spring-context 依賴 compile(project(":spring-context"))

my module

6.運行main方法,發現報錯

Error:(160, 32) java: 找不到符號 符號: 變數InstrumentationSavingAgent 位置:

報錯

網上搜索了一大堆的解決方法,發現都不行。後來看了spring-context的依賴發現,spring-instrument 在 spring-context 中為 optional 依賴(optional(project(":spring-instrument")) ),於是在自己的模塊中添加spring-instrument依賴

添加依賴

再次運行main方法,程式運行成功。

ps:令我感到奇怪的是,當我在寫這篇總結時,嘗試通過移除spring-instrument依賴來複現上述的問題時,發現復現不了了,好神奇。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 用於加密相關的操作,代替了md5模塊和sha模塊,主要提供SHA1,SHA224,SHA256,SHA512,MD5演算法。 以下是演算法示例: 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 import hashlib 4 # MD5()加密 5 ...
  • 年薪50W python視頻 馬哥30天快速入門Python,總共60個視頻 001-Python編程語言歷史及特性002-Python編程語言初接觸003-Python程式文件結構004-準備Python編程環境005-Python編程語言基礎技術框架(1)006-Python編程語言基礎技術框架 ...
  • 0.前言 在當前的行業發展和國際形勢下,讓更多的程式員思考跨平臺編程問題。在眾多的跨平臺開發環境中,Code::Blocks具有獨特的優勢。 近二十年來,跨平臺開發環境曾經如雨後春筍般產生,但是,由於後繼乏力,逐漸銷聲匿跡者頗多。作為程式員,熟悉一個平臺需要消耗大量的精力,把編寫的程式移植到另一個平 ...
  • EXCEPTION_ACCESS_VIOLATION(0xc0000005)eclipse.ini中添加:-XX:CompileCommand=exclude,org.eclipse.jdt.internal.coompiler.parser.TypeConverter::* ...
  • 今天我們來安裝和測試一下php的多併發高性能網路通信擴展,這個擴展是使用C語音開發的,載入到PHP以後,在PHP的層面上實現了多併發非同步通信,模擬了go語音的很多特性,極大的拓寬了PHP的應用場景。 直接使用官網上的那句命令就可以,安裝swoole時可能會出現錯誤和卡住不動,多試幾次就能成功。pec ...
  • 假定有下麵這樣的列表: 編寫一個函數,它以一個列表值作為參數,返回一個字元串。該字元串包含所有表項,表項之間以逗號和空格分隔,併在最後一個表項之前插入 and。例如,將前面的 spam 列表傳遞給函數,將返回'apples, bananas, tofu, and cats'。但你的函數應該能夠處理傳 ...
  • 今日主要內容 正則表達式 logging模塊 一、正則表達式 (一)什麼是正則表達式 1. 正則表達式的定義: 是對字元串操作的一種邏輯公式,就是用事先定義好的一些特定字元、及這些特定字元的組合,組成一個“規則字元串”,這個“規則字元串”用來表達對字元串的一種過濾邏輯。 簡單來說,我們使用正則表達式 ...
  • 由於JDK中提供的ByteBuffer無法動態擴容,並且API使用複雜等原因,Netty中提供了ByteBuf。Bytebuf的API操作更加便捷,可以動態擴容,提供了多種ByteBuf的實現,以及高效的零拷貝機制。 ByteBuf的操作 ByteBuf有三個重要的屬性:capacity容量,rea ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...