IDEA编译Spring源码

笔者的环境与版本

JDK:1.8.0_271(很重要)
Spring:5.2.4.RELEASE
下载Spring源码,可以从Spring官方的github库中(https://github.com/spring-projects/spring-framework)进行下载。由于需要从国外下载,速度肯定会慢,哈哈哈。不过我们可以登录gitee,将项目导入到gitee中,下载速度就会快很多啦。

image.png

将Spring的github仓库地址输入在文本框里


image.png

导入完成之后,点击master,可以看到里面包含很多Spring的历史分支版本


image.png

切换到标签栏,可以看到各种小版本
image.png

查看Spring的版本,找到gradle.properties文件


image.png

image.png

查看Grandl版本,找到spring-framework/ gradle / wrapper/gradle-wrapper.properties
image.png

配置镜像

将源码下载到本地之后,别急着用idea打开,先配置阿里云镜像。


image.png

打开build.gradle文件,找到repositories标签


image.png

在里面加入
 maven() { url "http://maven.aliyun.com/nexus/content/groups/public/" }

然后使用idea导入spring-framework项目,idea会自动去下载gradle依赖。接下来的事情就交给网速。

1、JDK版本问题

之前笔者的JDK版本是1.8.0_221,然后重新安装JDK,修改版本为1.8.0_271


image.png

2、镜像问题

出现:Could not resolve: com.ibm.websphere:uow:6.0.2.17,那是因为我将Spring自带的镜像给注释掉了。


image.png

3、jar下载不下来问题

image.png

这个问题挺好解决的,直接Ctrl + c jar包的地址,在浏览器进行下载。
下载完成后,需要找到gradle默认的保存的repository路径,File->Settings->Build,Execution,Deployment->Build Tools ->Gradle。
默认是在C:\Users\Administrator\.gradle
image.png

然后进入.gradle目录下的caches\modules\files-2.1目录中,将下载的jar包拷贝到这里面。
举例:缺少org.python:jython-standalone:2.7.1
image.png

那就需要在files-2.1下建立对应的目录。一个冒号就是分隔符。
image.png

image.png

image.png

笔者将上面遇到的问题都解决之后,Spring就编译成功啦!!!


image.png

添加模块

接下来笔者带大家在spring-framework来创建一个自己的module,看是否能够使用这些源码


image.png

选择Gradle创建一个Java项目


image.png

给module取一个名字
image.png

在新创建的 module 的 build.gradle 文件中,我们添加 spring-context 依赖,这个相当于 Maven 中的 pom.xml:

dependencies {
    compile(project(":spring-context"))
}

添加完依赖之后,我们写一个简单的测试类来试试。
首先创建一个User类:

public class User {

    private Integer id;
    private String name;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
@Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

然后在resources目录下创建 beans.xml 文件,配置该 Bean:




    
        
        
    

最后编写main方法:

public class Main {

    public static void main(String[] args) {
        ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:beans.xml");
        User user = ctx.getBean(User.class);
        System.out.println("user = " + user);
    }
}

启动的过程中又遇到了三个问题(我**太难了┭┮﹏┭┮)

错误一:

image.png

运行一下spring-core中的build的task,会就产生所缺少的jar包


image.png

错误二:

image.png

步骤1:

image.png

步骤2:

需要选择spring-core的main包


image.png

步骤3:添加jar

image.png

image.png

根据版本不同,该jar的所在目录也有可能不同。有可能在spring-core-coroutines包下。该包与spring-core同级。

步骤4:然后重新编译项目。

image.png

错误三:

image.png

打开spring-context.gradle文件,把这个optional改成了compile


image.png

然后再次运行main方法:

user = User{id=1, name='ssss'}

你可能感兴趣的:(IDEA编译Spring源码)