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导入了
导入后先立即停止
然后进行gradle的配置,主要是User Gradle from配置,如果配置这里应该是不用使用gradle-wrapper.properties配置的了,而是使用我们自己下载配置的gradle,当然gradle版本最好和配置文件中的相同
我使用得到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版本,一次通过,没有出现任何编译问题。