使用idea和gradle编译spring5.1.x源码
版本工具:spring5.1.x,gradle-5.6.3,jdk-11.0.7,IntelliJ IDEA 2021.1.3
1、下载gradle
gradle下载地址:https://services.gradle.org/distributions/
下载gradle-bin
2、配置环境变量
解压到指定目录:
双击Path,新建bin目录,Win11环境,最好不要用%GRADLE_HOME%\bin,会出问题,直接用路径即可。
配置好环境变量后,输入win+r,输入cmd进入到dos界面,键入gradle -v,若输出正确的版本信息就说明成功了。
3、配置gradle本地仓库
新增GRADLE_USER_HOME,指定本地路径。
4、下载spring源码
在https://github.com/搜索spring
找到spring-projects
找到main,选择5.1.x版本。
下载压缩包:
解压到指定目录:
5、将spring源码导入到idea
File==>New==>Project from Existing Sources…
检查项目Gradle项目版本:
File==>Project Structure… 或者 Ctrl + Alt + Shift + S
设置Gradle
设置本地Gradle和JVM版本。
把 Generate *.impl files for modules imported from Gradle勾上
修改gradle配置为https://services.gradle.org/distributions/gradle-5.6.3-bin.zip:
点击按键,同步一下:
然后进入,漫长的等待中…
build完后。
6、编译spring-core 和 spring-oxm
Gradle==>spring-core==>Tasks==>other==>compileTestJava 双击:
编译成功:
Gradle==>spring-oxm==>Tasks==>other==>compileTestJava 双击:
编译spring-oxm时会报一个log4j-slf4j-impl-2.11.2.jar 找不到的错误。
修改build.gradle,加上以下内容:
maven { url "https://repo.maven.apache.org/maven2"}
maven { url "https://repo1.maven.org/maven2"}
打开链接:https://repo1.maven.org/maven2/org/apache/logging/log4j/log4j-slf4j-impl/2.11.2/
把以下文件下载到本地maven目录下:
也可以来这里下载 :
https://download.csdn.net/download/liaoze2010/20190365
编译成功:
7、测试一下,源码是否编译成功
添加模块:new->model->gradle–>输入模块名称
选择Gradle
选择spring,输入模块名称:
添加项目依赖:
dependencies {
compile(project(":spring-context"))
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
}
刷新,同步一下:
把包路径建好,随意搞几个类:
UserEntity:
package com.lz.entity;
public class UserEntity {
private String id;
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
UserService:
package com.lz.service;
public interface UserService {
UserService queryUser(String id);
}
UserServiceImpl:
package com.lz.service.impl;
import com.lz.service.UserService;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl implements UserService {
public UserService queryUser(String id) {
System.out.println("queryUser====>张三");
return null;
}
}
AppTest:
package com.lz.test;
import com.lz.service.UserService;
import com.lz.service.impl.UserServiceImpl;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan("com.lz")
public class AppTest {
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppTest.class);
UserService bean = context.getBean(UserService.class);
bean.queryUser("1");
}
}
成功!!!
源码已上传,没成功的朋友可以直接下载使用:
https://download.csdn.net/download/liaoze2010/20190271