2.1 Spring5源碼系列--源碼編譯


一. 准備工作

1. . 編譯環境

  • maven
  • jdk8
  • idea

2. 編譯版本:

  SpringV5.2.7RELEASE+GradleWapper+jdk1.8.0_131編譯

 

二. 源碼下載

  git地址: 進入https://github.com/spring-projects/spring-framework

  Spring的源碼是發布在github上面的

  注: 需要連接FQ軟件才行, 不然git特別慢

 

 

 

 

 

 

版本號介紹

 

 

 

M:
M1,M2,…中的M是milestone的簡寫,意思是里程碑,代表着有重大改進的版本。

三. 構建工作准備

安裝源碼有兩種方式:

第一種: 下載spring使用的對應的Gradle版本,安裝

第二種: 使用自帶的gradleWrapper.

備注: 我在導入項目到idea的時候, 不能夠選擇使用的gradle編譯類型(使用系統的gradle還是gradleWrapper), 所以, 我是自己安裝了Gradle, 然后編譯的.

 

查看spring源碼中gradle的版本. 下載對應版本的gradle.

在gradle-wrapper.properties中查看版本號

 

 

 我們看看到spring5.2.7.RELEASE對應的gradle版本是5.6.4-bin.zip. 我們下載這個文件. 

網盤鏈接: https://pan.baidu.com/s/1NduYeCVYJxDbd4YX1XcIEw  密碼: dqcq

 

如果使用方法二, gradleWrapper會自動下載, 這是官方推薦的方式. window平台的idea可以選擇使用gradleWrapper的方式.

 

四. 編譯Spring源碼項目

1. 修改build.gradle

這個文件就相當於我們Maven的pom.xml 管理項目的依賴等配置
設置鏡像

repositories {
            maven{ url 'https://maven.aliyun.com/nexus/content/groups/public/'}
            maven{ url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'}
            mavenCentral()
            maven { url "https://repo.spring.io/libs-spring-framework-build" }
        }

 

2. 編譯compileTestJava模塊

進入到源碼所在文件夾, 執行一下命令. 我的是mac本, 所以需要加./, 如果是windows本就不需要加
./gradlew :spring-oxm:compileTestJava
配置了鏡像很快(一兩分鍾)就能 編譯完成, 如果要 很久說明你的 鏡像沒起作用
 
 

3. 導入項目到idea中, 進行編譯

我這里導入代碼, 自動就會進行編譯了. 不需要額外的操作. 這個和idea的版本有關,我的idea是2020.1的

 

 最后提示finished就ok了. 

 

五. 測試源碼編譯是否成功

1. 添加測試模塊代碼

  new->model->gradle-->輸入模塊名稱

 

 

 

 設置項目名, 設置好以后點擊finish

 

2. 添加測試文件, 測試IoC功能

  • 為項目添加依賴
dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12' 
    compile(project(":spring-context"))     
}
compile(project(":spring-context"))  代表本項目的
  • 隨意添加一個bean
package com.lxl.www;

import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl {

    public void sayHi(){
        System.out.println("Hello Spring!");
    }
}
  • 添加啟動類
import cn.tulingxueyuan.beans.UserServiceImpl;
import javafx.application.Application;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan("com.lxl.www")
public class MainStat {

    public static void main(String[] args) {
        ApplicationContext context=new AnnotationConfigApplicationContext(MainStat.class);
        UserServiceImpl bean = context.getBean(UserServiceImpl.class);
        bean.sayHi();

    }

}
  • 啟動MainStat並運行. 如果看到如下輸出, 表示成功了

 

 代碼依然會報錯, 是一個git的異常, 這個可以忽略. 看到上面編譯成功,並且有打印結果, 就說明成功了.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM