IDEA工具导入Spring 源码工程

IDEA工具导入Spring 源码工程

前提条件

  • JDK1.8版本
  • 安装Gradle

下载Spring源码

进入Github,找到spring-framework源码地址。或者直接登陆到GitHub - spring-projects/spring-framework: Spring Framework这个地址官网,下载到本地磁盘


修改配置信息,为编译做准备工作

使用idea打开我们刚刚下载的Spring工程项目,使用Gradle 对Spring项目进行编译

  1. 修改工程中最外边的settings.gradle文件,修改文件中的插件中的仓库信息,修改如下:

    pluginManagement {
    	repositories {
    		gradlePluginPortal()
    		mavenLocal()
    		maven { url 'https://mirrors.huaweicloud.com/repository/maven/' }
    		maven { url 'https://maven.aliyun.com/repository/public' }
    		maven { url 'https://nexus.bsdn.org/content/groups/public/' }
    		maven { url 'https://maven.aliyun.com/repository/google' }
    		maven { url 'https://maven.aliyun.com/repository/spring' }
    		maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
    		maven { url 'https://maven.aliyun.com/repository/spring-plugin' }
    		maven { url 'https://repo.huaweicloud.com/repository/maven/' }
    		maven { url 'https://repo.spring.io/plugins-release' }
    	}
    }
    
  2. 修改工程中最外边的build.gradle文件,同上边修改setting.gradle一样,同样修改的也是仓库信息,具体如下:

    		repositories {
    			mavenLocal()
    			maven { url 'https://mirrors.huaweicloud.com/repository/maven/' }
    			maven { url 'https://maven.aliyun.com/repository/public' }
    			maven { url 'https://nexus.bsdn.org/content/groups/public/' }
    			maven { url 'https://maven.aliyun.com/repository/google' }
    			maven { url 'https://maven.aliyun.com/repository/spring' }
    			maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
    			maven { url 'https://maven.aliyun.com/repository/spring-plugin' }
    			maven { url 'https://repo.huaweicloud.com/repository/maven/' }
    		    maven { url "http://repo.springsource.org/plugins-release" }
    		    mavenCentral()
    		}
    
  3. 修改工程中gradle目录下的build-cache-settings.gradle文件,我们使用本地缓存,关闭远端缓存信息

    buildCache {
    	local {
    		enabled = true
    	}
    	remote(HttpBuildCache) {
    		enabled = false  ## 关闭远端缓存
    		url = 'https://ge.spring.io/cache/'
    		def cacheUsername = System.getenv('GRADLE_ENTERPRISE_CACHE_USERNAME')
    		def cachePassword = System.getenv('GRADLE_ENTERPRISE_CACHE_PASSWORD')
    		if (cacheUsername && cachePassword) {
    			push = true
    			credentials {
    				username = cacheUsername
    				password = cachePassword
    			}
    		}
    	}
    }
    

编译工程,导入到idea中
  1. 我们在下载的目录中开启cmd命令窗口,执行一下gradlew编译命令,看一下是否可以通过编译,具体执行如下命令:

    gradlew :spring-oxm:compileTestJava
    
    BUILD SUCCESSFUL in 33s
    40 actionable tasks: 22 executed, 18 up-to-date
    
  2. 将结果导入到idea中,File -> New -> Project from Existing Sources -> Navigate to directory -> Select build.gradle

  3. 启动时记得要排除spring-aspects module


在源码中创建自己的工程
  1. 在源码的父工程下创建一个Gradle的子module,名称为my-spring-demo子模块。在我们修改的第一个配置文件setting.gradle的下边添加我们相关的子模块信息。

    include "spring-websocket"
    include "framework-bom"
    include "integration-tests"
    include "my-spring-demo"   ## 我们自己的项目模块
    rootProject.name = "spring"
    rootProject.children.each {project ->
    	project.buildFileName = "${project.name}.gradle"
    }
    
  2. 在我们的子模块中修改自己模块中的gradle配置信息,注意: 该gradle文件必须和你的项目模块名称一致,比如我们的是my-spring-demo.gradle文件

    plugins {
        id 'java'
    }
    
    group 'org.springframework'
    version '5.2.14.BUILD-SNAPSHOT'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        compile(project(":spring-beans"))
        compile(project(":spring-context"))
        testCompile group: 'junit', name: 'junit', version: '4.12'
    }
    
  3. 我们还是使用配置xml的方式创建一个测试案例

    public class User {
    
    	private String name;
    	private String address;
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public String getAddress() {
    		return address;
    	}
    
    	public void setAddress(String address) {
    		this.address = address;
    	}
    
    	@Override
    	public String toString() {
    		return "User{" +
    				"name='" + name + '\'' +
    				", address='" + address + '\'' +
    				'}';
    	}
    }
    
    <?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="user" class="com.tenic.spring.demo1.User">
    		<property name="name" value="tenic"/>
    		<property name="address" value="www.cnblogs.com/tenic"/>
    	</bean>
    
    </beans>
    
    
    public class AppTest {
    
    	public static void main(String[] args) {
    		ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
    		User bean = ac.getBean(User.class);
    		System.out.println(bean.toString());
    
    		TestBean testBean = (TestBean) ac.getBean("testBean");
    		System.out.println(testBean.getTestStr());
    	}
    }
    
  4. 直接运行该main方法,可以看到控制台中输出了我们想要的信息,如下图片展示

idea导入spring源码工作到此结束了,请大家开心食用
posted @ 2022-05-15 16:37  Tenic  阅读(413)  评论(0编辑  收藏  举报