记一次spring源码构建(idea)全过程 --亲测可用
程序员文章站
2022-05-29 13:36:53
...
前期环境搭建:
- JDK版本:1.8.0_161
- 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
- GRADLE版本:4.9
- 下载地址:https://gradle.org/releases/
- 配置教程:https://www.cnblogs.com/linkstar/p/7899191.html
- Spring源码版本:v5.0.8.RELEASE
- 下载地址:https://github.com/spring-projects/spring-framework/releases
- IntelliJ IDEA版本:IntelliJ IDEA 2018.2.1 (Ultimate Edition)
- 下载地址:https://www.jetbrains.com/idea/download/
- 系统:WINDOWS 10
源码下载到本地后解压如下:
然后打开idea,导入下载好的项目
配置idea中的gradle环境
配置gradle运行环境参数
-XX:MaxPermSize=2048m -Xmx2048m -XX:MaxHeapSize=2048m
3.注释掉dokka和asciidoctor两个配置项
替换docs.gradle文件中的task schemaZip配置
因为spring源码是用linux环境构建的,文件路径和window不同,所以要换成windows环境的路径
task schemaZip(type: Zip) {
group = "Distribution"
baseName = "spring-framework"
classifier = "schema"
description = "Builds -${classifier} archive containing all " +
"XSDs for deployment at http://springframework.org/schema."
duplicatesStrategy 'exclude'
moduleProjects.each { subproject ->
def Properties schemas = new Properties();
subproject.sourceSets.main.resources.find {
it.path.endsWith("META-INF\\spring.schemas")
}?.withInputStream { schemas.load(it) }
for (def key : schemas.keySet()) {
def shortName = key.replaceAll(/http.*schema.(.*).spring-.*/, '$1')
assert shortName != key
File xsdFile = subproject.sourceSets.main.resources.find {
it.path.endsWith(schemas.get(key).replaceAll('\\/','\\\\'))
}
assert xsdFile != null
into (shortName) {
from xsdFile.path
}
}
}
}
根据import-into-idea.md文档步骤去构建
根据import-into-idea.md文档里面介绍,我们需要对spring-core和spring-oxm做预编译,可以通过以下命令./gradlew :spring-oxm:compileTestJava
,在IDEA比较简单,对这两个包分别按下图操作即可:
终极构建Spring项目
最后一步,对整个Spring项目构建,这个时候它会自动下载依赖包,如果有异常,会在控制台抛出并停止操作。
构建过程比较长,需要半小时左右;构建完成后,新创建一个maven项目并编写测试
在spring源码中,新建一个自己的module
选择maven
此时可以编写测试demo
package com.hauto;
public class HelloSpring {
public void say(){
System.out.println("hello ==================");
}
}
package com.hauto;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class TestClient {
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
context.refresh();
context.register(HelloSpring.class);
HelloSpring helloSpring = (HelloSpring)context.getBean("helloSpring");
helloSpring.say();
}
}
运行此demo
注意=====================此时会报错=======
报错的内容是aspect相关的错误
解决办法
下载AspectJ
Spring实现了AOP(面向切面编程),它依赖AspectJ,因此需要下载AspectJ并安装,同时配置好环境变量。
打开命令行,cd到AspectJ的jar包所在的文件夹,运行java -jar aspectj-1.9.4.jar命令,打开AspectJ的安装界面,直接点击Next,如下图:
根据提示完成安装
然后回到项目按下图完成aspectj的配置
现在可以启动demo中的测试了