​?​

 

 

1. 下载源码

1. 源码下载

​​



git clone https://gitee.com/mirrors/Spring-Framework.git Spring-Framework-5.2.x


然后删除.git和.github文件夹删除,简单起见

现在的目录结构 F:\java\OpenSource\spring\Spring-Framework-5.2.x,Spring-Framework-5.2.x内即为个模块源码,.git和.github文件夹就在此文件夹内

 

2. 与远程仓库相关联

然后在码云新建一个仓库(实际上新建完成一个仓库后,会有一些提示信息,教怎么做)

初始化本地仓库



cd Spring-Framework-5.2.x
git init


所有数据提交到暂存区



git add .          # 这里耗费比较长的时间


所有数据提交到本地仓库



# 这两条命令若已配置,可不需要执行
git config --global user.name "cxy-ali-gitee"
git config --global user.email "stu.xy.chen@qq.com"
git commit -m 'init repository'


这里它可能报错,需要你配置 mail 和 name 即邮箱和姓名信息,配置后,然后重新执行

添加远程仓库信息,注意填写你自己的



git remote add origin https://gitee.com/cxy-ali-gitee/spring-5.2.x.git


将代码推送到远程仓库



# 由于我在创建码云远程分支时初始化了readme.md文件,并且删除了,导致本地和远程提交历史不同,需要加参数拉取代码
git pull origin master --allow-unrelated-histories
# 提交本地代码到远程分支
git push -u origin master -- 这个是我们新建仓库时默认的分支


执行 git push 会要求输入用户名和密码,我这里输入的是码云注册时的邮箱和密码。如果错误可搜索如何删除账号信息然后删除信息,因为即使错误,git也会缓存信息

 

新建分支,可以新建一个如dev、learn等形式的分支,这里我新建一个dev分支

git命令相关信息​​​



git branch dev -- 新建本地分支
git push origin dev -- 会在远程仓库建立dev分支
git checkout dev -- 切换到dev分支


 

 

2. 源码编译

1. 文件配置

源码构建时会下载依赖jar包,因此一般需要配置国内的镜像来加快下载

项目文件夹下的 build.gradle的大约292行的repositories标签

第一行添加的是阿里云的镜像,最好按以下顺序,不然jar包可能下载得很慢



repositories {
mavenLocal()
// 自己搭建的私服
// maven { url 'http://192.168.64.130:8081/repository/maven-central/' }
maven { url "http://maven.aliyun.com/nexus/content/groups/public" }
maven { url "https://repo.spring.io/libs-spring-framework-build" }
mavenCentral()
}


打开项目文件即夹下的\gradle\wrapper\gradle-wrapper.properties文件



1 distributionBase=GRADLE_USER_HOME
2 distributionPath=wrapper/dists
3 distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip
4 zipStoreBase=GRADLE_USER_HOME
5 zipStorePath=wrapper/dists


不知道你们第三行的版本是多少,我的显示gradle-6.8.3-bin.zip,第三行修改为如下路径,当然此zip需要事先下好(直接复制浏览器下载还挺快的​​​​),且存放路径不要有中文,否则报错,最好也不要有空格

因为执行后面的命令时会在线下载这个包,可能是因为服务器在国外,有很大的可能下载失败



distributionUrl=file\:///F:/java/development/gradle/gradle-6.8.3-bin.zip
distributionBase和distributionPath组合表示gradle的zip文件解压后存放的位置
zipStoreBase和zipStorePath指定下载的zip文件存放的位置。下载存放位置和解压存放位置可以不一致


 

 提交远程仓库



git add .
git commit -m '编译配置修改'
git push -u origin dev


 

2. 环境变量

首先是JAVA_HOME,还有将JAVA_HOME/bin路径加入path

其次是GRADLE_USER_HOME,这个是下载依赖的包的位置,最好设置一下

 

3. 编译

到这里好像可以直接使用IDEA导入,我是先执行了下面,然后报错,我就直接用IDEA导入了

导入后先立即停止

Spring 5.2.x源码构建_java

然后进行gradle的配置,主要是User Gradle from配置,如果配置这里应该是不用使用gradle-wrapper.properties配置的了,而是使用我们自己下载配置的gradle,当然gradle版本最好和配置文件中的相同

Spring 5.2.x源码构建_远程仓库_02

我使用得到jdk版本是1.8.0_301

导入后在右边Gradle导航栏 spring-core --> Tasks --> other --> compileTestJava双击执行

 

OK,全程没问题

 

3. 测试

新建一个 gradle的模块,父module为spring,build.gradle内配置



1 dependencies {
2 testCompile group: 'junit', name: 'junit', version: '4.12'
3 compile(project(":spring-context"))
4 }


主要是第二行引入模块

然后就可以编写案例测试了,只要新建一个Configuration类扫描 + 一个Bean ==> getBean 能拿出来即可



package com.chen.app;

import com.chen.app.domain.UserService;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan("com.chen.app")
public class Application {
public static void main(String[] args) {
AnnotationConfigApplicationContext
context = new AnnotationConfigApplicationContext(Application.class);
UserService bean = context.getBean(UserService.class);
System.out.println("----------------------------------------------");
System.out.println(bean);
System.out.println("----------------------------------------------");
}
}



package com.chen.app.domain;

import org.springframework.stereotype.Component;

@Component
public class UserService {

}


 若出现标红,右边gradle找到当前模块,刷新一下即可

 

如果还是有其他问题,可以将jdk版本下载为oracle官网能得到的jdk8最高的版本。之前也编译过,jdk版本是网上得到的随便一个jdk8的,出现了很多问题。这次使用的是oracle官网的最高jdk8版本,一次通过,没有出现任何编译问题。