一、Spring5.2.x源码环境搭建

目录

一、Spring5.2.x源码环境搭建

1.准备

1.1.安装gradle

1.2.下载Spring源码

2.构建

3.测试

3.1.新建工程

3.2.修改build.gradle

3.3.编写测试代码

一、Spring5.2.x源码环境搭建

搭建Spring5.2.x源码环境,需要安装jdk1.8以上版本,gradele4.2以上版本

工具:IntelliJ IDEA 2019.2.2

1.准备

1.1.安装gradle

  • 解压

       

 

  • 配置环境变量

    新增 GRADLE_HOME=D:\Gradle\gradle-5.6.4

    PATH中增加 %GRADLE_HOME%/bin;

        

 

  • 查看版本信息

    gradle -v

 

       

 

 

  • 配置gradle

    在gradle的根目录下的init.d文件夹中新建一个 init.gradle ,添加一下内容(下载加速)

    allprojects{
        repositories {
            def REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public/'
            all { ArtifactRepository repo ->
                def url = repo.url.toString()
                if ((repo instanceof MavenArtifactRepository) && (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com'))) {
                    project.logger.lifecycle 'Repository ${repo.url} replaced by $REPOSITORY_URL .'
                    remove repo
                }
            }
            maven {
                url REPOSITORY_URL
            }
        }
    }
  • idea配置gradle

    打开Idea,File--Settings--Build,Execution,Deployment--Build Tools--Gradle

    配置 Gradle user home 为 gradle的环境变量 GRADLE_HOME 目录

 

       

 

1.2.下载Spring源码

采用git clone方式下载,直接下载zip包在构建的时候可能会出现问题

 

可以看到编译成功了,但是报错,git相关的错误

原因是,我们是采用zip方式下载下来进行构建的,zip主要是用来共享源代码,但是不一定用于构建它

想要避免此错误,要采用git clone方式下载

       

      

  • git clone

    git clone -b 5.2.x https://gitee.com/mirrors/Spring-Framework.git

      

2.构建

  • 修改build.gradle配置

repositories {
    mavenCentral()
    maven { url "http://maven.aliyun.com/nexus/content/groups/public/" }
}

  

  • 构建源码

    cmd进入spring源码目录 spring-framework-5.2.x,执行 gradlew :spring-oxm:compileTestJava

    此命令可能需要等一段时间,可以跳过,直接进行下一步,当然下一步也会耗时一会,因为要下载相关的包

 

       

 

 

  • 导入到Idea

    File--New--roject from Existing Sources

    找到选择spring-framework源码, 选择build.gradle

  • 修改gradle配置

    spring导入到idea后进行构建时,默认会按照gradle中的配置

    找到 gradle-wrapper.properties,按照配置进行下载

    不想下载,可以进行修改

    选择 Specified location,选择gradle的安装目录,即环境变量 GRADLE_HOME 目录

    修改后,重启IDEA

    重新进行构建,就没有下载gradle的步骤了

 

3.测试

3.1.新建工程

选中父工程 Spring-Framework,右键,new--Module

 

Next,填写ArtifactId,如 spring-mytest

Next,再Finish

 

3.2.修改build.gradle

加入依赖 spring-context

plugins {
    id 'java'
}

group 'org.springframework'
version '5.0.11.BUILD-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    compile project(':spring-context')
	testCompile group: 'junit', name: 'junit', version: '4.12'
}

 

 

3.3.编写测试代码

 

spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">


	<bean id="testService" class="com.mytest.service.TestService"></bean>

</beans>

TestConfig.java

package com.mytest.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan("com.mytest")
public class TestConfig {
}

TestService.java

package com.mytest.service;

import org.springframework.stereotype.Component;

@Component
public class TestService {

   public void testMethod(){
      System.out.println("Spring源码搭建成功!!");
   }
}

Test.java

package com.mytest.main;

		import com.mytest.config.TestConfig;
		import com.mytest.service.TestService;
		import org.springframework.context.annotation.AnnotationConfigApplicationContext;
		import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test {
	public static void main(String[] args) {
		//注解方式
		AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext(TestConfig.class);
		TestService bean = annotationConfigApplicationContext.getBean(TestService.class);.
		bean.testMethod();
        //配置文件方式
		ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("spring.xml");
		TestService bean1 = classPathXmlApplicationContext.getBean(TestService.class);
		bean1.testMethod();
	}
}

测试运行

11:04:36: Executing task 'Test.main()'...

> Task :buildSrc:compileJava UP-TO-DATE
> Task :buildSrc:compileGroovy NO-SOURCE
> Task :buildSrc:pluginDescriptors UP-TO-DATE
> Task :buildSrc:processResources UP-TO-DATE
> Task :buildSrc:classes UP-TO-DATE
> Task :buildSrc:jar UP-TO-DATE
> Task :buildSrc:assemble UP-TO-DATE
> Task :buildSrc:pluginUnderTestMetadata UP-TO-DATE
> Task :buildSrc:compileTestJava NO-SOURCE
> Task :buildSrc:compileTestGroovy NO-SOURCE
> Task :buildSrc:processTestResources NO-SOURCE
> Task :buildSrc:testClasses UP-TO-DATE
> Task :buildSrc:test NO-SOURCE
> Task :buildSrc:validateTaskProperties UP-TO-DATE
> Task :buildSrc:check UP-TO-DATE
> Task :buildSrc:build UP-TO-DATE
> Task :spring-core:cglibRepackJar UP-TO-DATE
> Task :spring-core:objenesisRepackJar UP-TO-DATE
> Task :spring-expression:processResources UP-TO-DATE
> Task :spring-aop:processResources UP-TO-DATE
> Task :spring-beans:processResources UP-TO-DATE
> Task :spring-core:processResources UP-TO-DATE
> Task :spring-context:processResources UP-TO-DATE
> Task :spring-mytest:processResources
> Task :kotlin-coroutines:compileKotlin UP-TO-DATE
> Task :kotlin-coroutines:compileJava NO-SOURCE
> Task :kotlin-coroutines:processResources NO-SOURCE
> Task :kotlin-coroutines:classes UP-TO-DATE
> Task :kotlin-coroutines:inspectClassesForKotlinIC UP-TO-DATE
> Task :spring-instrument:compileJava UP-TO-DATE
> Task :kotlin-coroutines:jar UP-TO-DATE
> Task :spring-instrument:processResources NO-SOURCE
> Task :spring-instrument:classes UP-TO-DATE
> Task :spring-instrument:jar UP-TO-DATE
> Task :spring-jcl:compileJava UP-TO-DATE
> Task :spring-jcl:processResources UP-TO-DATE
> Task :spring-jcl:classes UP-TO-DATE
> Task :spring-jcl:jar UP-TO-DATE
> Task :spring-core:compileKotlin UP-TO-DATE
> Task :spring-core:compileJava UP-TO-DATE
> Task :spring-core:classes UP-TO-DATE
> Task :spring-core:inspectClassesForKotlinIC UP-TO-DATE
> Task :spring-core:jar UP-TO-DATE
> Task :spring-expression:compileKotlin UP-TO-DATE
> Task :spring-expression:compileJava UP-TO-DATE
> Task :spring-expression:classes UP-TO-DATE
> Task :spring-expression:inspectClassesForKotlinIC UP-TO-DATE
> Task :spring-expression:jar UP-TO-DATE
> Task :spring-beans:compileGroovy UP-TO-DATE
> Task :spring-beans:compileKotlin UP-TO-DATE
> Task :spring-beans:compileJava NO-SOURCE
> Task :spring-beans:classes UP-TO-DATE
> Task :spring-beans:inspectClassesForKotlinIC UP-TO-DATE
> Task :spring-beans:jar UP-TO-DATE
> Task :spring-aop:compileJava UP-TO-DATE
> Task :spring-aop:classes UP-TO-DATE
> Task :spring-aop:jar UP-TO-DATE
> Task :spring-context:compileKotlin UP-TO-DATE
> Task :spring-context:compileJava UP-TO-DATE
> Task :spring-context:compileGroovy NO-SOURCE
> Task :spring-context:classes UP-TO-DATE
> Task :spring-context:inspectClassesForKotlinIC UP-TO-DATE
> Task :spring-context:jar UP-TO-DATE
> Task :spring-mytest:compileJava
> Task :spring-mytest:classes

> Task :spring-mytest:Test.main()
Spring源码搭建成功!!

Deprecated Gradle features were used in this build, making it incompatible with Gradle 6.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/5.6.4/userguide/command_line_interface.html#sec:command_line_warnings

BUILD SUCCESSFUL in 5s
36 actionable tasks: 3 executed, 33 up-to-date
11:04:49: Task execution finished 'Test.main()'.

可以看到,正常输出了 Spring源码搭建成功!!

至此,Spring源码环境搭建成功。

最后,构建后的源码地址:https://gitee.com/yan002/spring-framework5.2.x.git

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值