Specifies the Gradle user home directory (which defaults to $USER_HOME/.gradle if not set).
GtiHub Spring Framework
截至到 20230821, Spring 5 的最新正式版是 5.3.29
通过 Git ([email protected]:spring-projects/spring-framework.git) 的方式把代码拉下来, 文件夹名称叫 spring, 然后切换分支到标签 5.3.29, 可以使用命令 git checkout -b mybranch v5.3.29
修改根目录下 build.gradle 的内容, 在 repositories 节点中添加 Maven 本地仓库和阿里云仓库, 构建速度可能会快一点
repositories {
mavenLocal()
maven {url 'https://maven.aliyun.com/repository/public'}
mavenCentral()
maven { url "https://repo.spring.io/libs-spring-framework-build" }
}
源码中自带导入 Idea 的说明文件 import-into-idea.md, 大致意思如下
gradlew :spring-oxm:compileTestJava
命令来预编译 spring-oxm
模块spring-aspects
模块, File-> Project Structure -> Modules在源码文件夹打开终端, 执行 gradlew :spring-oxm:compileTestJava
, 会先自动从 https://services.gradle.org/distributions/gradle-7.5.1-bin.zip 下载 gradle-7.5.1-bin.zip, 和一些依赖, 如果网络不行的话, 可能会报错. 一切顺利的话, 构建成功后大概显示如下内容
先打开一个项目, 然后点击 File -> New -> Project from Existing Sources -> 找到 build.gradle, 点击 OK, Idea 会自动开始 Gradle Build, 会下载很多依赖, 等待其完成. 一切顺利的话, 构建成功后大概显示如下内容
构建完成之后, 点击 File - Project Structure - Modules, 移除子模块 spring-aspects
点击 File - Settings - Build, Execution, Deployment - Build Tools - Gradle, Build and run using 和 Run tests using 两个选项都选择 IntelliJ IDEA, 这样不必每次都跑一堆任务, 即可直接运行测试代码
点击项目, 新建一个名为 main 的模块, 用于测试和 debug
在其 build.gradle 的 dependencies 中添加 spring-context 的引用 implementation(project(":spring-context"))
, 然后刷新配置
添加如下配置类, 然后编译运行, 作为解决各种问题的开始, 啥时候该类能运行了, 问题就解决完了
@Configuration
public class Application {
@Bean
public String string() {
return "demo";
}
public static void main(String[] args) {
AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(Application.class);
Object bean = ac.getBean("string");
System.out.println(bean);
}
}
C:\mrathena\develop\workspace\idea\mrathena\spring\spring-core\src\main\java\org\springframework\core\metrics\jfr\FlightRecorderStartupEvent.java:19:15
java: 程序包jdk.jfr不存在
File | Settings | Build, Execution, Deployment | Compiler | Java Compiler, Project bytecode version 改为对应 SDK 的版本
C:\mrathena\develop\workspace\idea\mrathena\spring\spring-context\src\main\java\org\springframework\context\weaving\DefaultContextLoadTimeWeaver.java:26:38
java: 找不到符号
符号: 类 InstrumentationSavingAgent
位置: 程序包 org.springframework.instrument