IDEA工具导入Spring 源码工程
IDEA工具导入Spring 源码工程
前提条件
- JDK1.8版本
- 安装Gradle
下载Spring源码
进入Github,找到spring-framework源码地址。或者直接登陆到GitHub - spring-projects/spring-framework: Spring Framework这个地址官网,下载到本地磁盘
修改配置信息,为编译做准备工作
使用idea打开我们刚刚下载的Spring工程项目,使用Gradle 对Spring项目进行编译
-
修改工程中最外边的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' } } }
-
修改工程中最外边的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() }
-
修改工程中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中
-
我们在下载的目录中开启cmd命令窗口,执行一下gradlew编译命令,看一下是否可以通过编译,具体执行如下命令:
gradlew :spring-oxm:compileTestJava BUILD SUCCESSFUL in 33s 40 actionable tasks: 22 executed, 18 up-to-date
-
将结果导入到idea中,File -> New -> Project from Existing Sources -> Navigate to directory -> Select build.gradle
-
启动时记得要排除spring-aspects module
在源码中创建自己的工程
-
在源码的父工程下创建一个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" }
-
在我们的子模块中修改自己模块中的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' }
-
我们还是使用配置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()); } }
-
直接运行该main方法,可以看到控制台中输出了我们想要的信息,如下图片展示
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)