IDEA导入Spring源码

IDEA导入Spring源码

一,环境准备

1,Spring源码包

    下载地址:https://github.com/spring-projects/spring-framework

2,gradle工具

    下载地址:http://downloads.gradle.org/distributions/gradle-4.6-bin.zip

3,IDEA工具

二,搭建流程

1,下载Spring源码包

    (1) 下载完成后解压

2,下载gradle工具包

    (1) 直接复制上面路径到链接框直接下载

    (2) 解压安装包到制定路径

    (3) 配置gradle环境变量

        将gradle解压路径添加到Path变量 : Path : D:\Program Files\gradle-4.6\bin

        使用gradle -v 进行环境变量检验

3,打开IDEA,直接open该项目

4,配置本地gradle



5,走到这一步需要注意两个异常

    (1) Error:Connection timed out: connect. If you are behind an HTTP proxy, please configure the

        proxy  国外服务器可能存在不稳定,链接超时,这时候需要刷新gradle

(2) Unable to make the module: related gradle configuration was not found. Please, re-import

    the Gradle 没有找到gradle配置,第五六步,查看gradle配置是否正常,然后刷新gradle

 (3) 这一步可能会出现报错:

   Error:(30, 0) No such property: values for class: org.gradle.api.internal.tasks.DefaultTaskDependency
   Possible solutions: values
   Open File(spring-beans\spring-beans.gradle )
   点击:Open File 然后注释掉如下代码:
   //compileGroovy.dependsOn = compileGroovy.taskDependencies.values - ‘compileJava’

   最后刷新gradle

6, gradle安装完成依赖包后,对整个工程进行重新构建

7,jar包引入

    (1) 走到这里后,如果不出意外,构建会报错,两个jar包找不到

         这是因为spring在构建中,为了防止冲突,没有引入这两个包,需要自己引入

         报错的位置在spring-core模块下

    将变红的jar包删除

    添加新的jar包

     第二个包同理引入

(2) 若没有spring-cglib-repack-3.2.7.jar和spring-objenesis-repack-2.6.jar这两个jar包

  在源码解压的目录(E:\spring-framework-5.0.x)下执行cmd命令

gradle objenesisRepackJar和gradle cglibRepackJar,

  会在E:\spring-framework-5.0.x\spring-core\build\libs 目录下生成jar包。

8,引入完成后,重新构建 build --> build project

(1)又报了新的错误: 找不到符号: 类 AnnotationBeanConfigurerAspect ,JCacheCacheAspect ,AnnotationAsyncExecutionAspect ,AnnotationCacheAspect ,AnnotationTransactionAspect ,具体如下:

E:\spring-framework-5.0.x\spring-aspects\src\main\java\org\springframework\context\annotation\aspectj\SpringConfiguredConfiguration.java
Error:(19, 49) java: 找不到符号
符号: 类 AnnotationBeanConfigurerAspect
位置: 程序包 org.springframework.beans.factory.aspectj
Error:(47, 16) java: 找不到符号
符号: 类 AnnotationBeanConfigurerAspect
位置: 类 org.springframework.context.annotation.aspectj.SpringConfiguredConfiguration
Error:(48, 24) java: 找不到符号
符号: 变量 AnnotationBeanConfigurerAspect
位置: 类 org.springframework.context.annotation.aspectj.SpringConfiguredConfiguration
E:\spring-framework-5.0.x\spring-aspects\src\main\java\org\springframework\cache\aspectj\AspectJJCacheConfiguration.java
Error:(42, 16) java: 找不到符号
符号: 类 JCacheCacheAspect
位置: 类 org.springframework.cache.aspectj.AspectJJCacheConfiguration
Error:(43, 17) java: 找不到符号
符号: 类 JCacheCacheAspect
位置: 类 org.springframework.cache.aspectj.AspectJJCacheConfiguration
Error:(43, 49) java: 找不到符号
符号: 变量 JCacheCacheAspect
位置: 类 org.springframework.cache.aspectj.AspectJJCacheConfiguration
E:\spring-framework-5.0.x\spring-aspects\src\main\java\org\springframework\scheduling\aspectj\AspectJAsyncConfiguration.java
Error:(43, 16) java: 找不到符号
符号: 类 AnnotationAsyncExecutionAspect
位置: 类 org.springframework.scheduling.aspectj.AspectJAsyncConfiguration
Error:(44, 17) java: 找不到符号
符号: 类 AnnotationAsyncExecutionAspect
位置: 类 org.springframework.scheduling.aspectj.AspectJAsyncConfiguration
Error:(44, 62) java: 找不到符号
符号: 变量 AnnotationAsyncExecutionAspect
位置: 类 org.springframework.scheduling.aspectj.AspectJAsyncConfiguration
E:\spring-framework-5.0.x\spring-aspects\src\main\java\org\springframework\cache\aspectj\AspectJCachingConfiguration.java
Error:(42, 16) java: 找不到符号
符号: 类 AnnotationCacheAspect
位置: 类 org.springframework.cache.aspectj.AspectJCachingConfiguration
Error:(43, 17) java: 找不到符号
符号: 类 AnnotationCacheAspect
位置: 类 org.springframework.cache.aspectj.AspectJCachingConfiguration
Error:(43, 53) java: 找不到符号
符号: 变量 AnnotationCacheAspect
位置: 类 org.springframework.cache.aspectj.AspectJCachingConfiguration
E:\spring-framework-5.0.x\spring-aspects\src\main\java\org\springframework\transaction\aspectj\AspectJTransactionManagementConfiguration.java
Error:(42, 16) java: 找不到符号
符号: 类 AnnotationTransactionAspect
位置: 类 org.springframework.transaction.aspectj.AspectJTransactionManagementConfiguration
Error:(43, 17) java: 找不到符号
符号: 类 AnnotationTransactionAspect
位置: 类 org.springframework.transaction.aspectj.AspectJTransactionManagementConfiguration
Error:(43, 56) java: 找不到符号
符号: 变量 AnnotationTransactionAspect
位置: 类 org.springframework.transaction.aspectj.AspectJTransactionManagementConfiguration

问题原因是使用了aspectJ ,而java不识别aspectJ
下载安装AspectJ

(2)解决过程:
下载AspectJ
注:确保下载前安装了jdk
https://www.eclipse.org/aspectj/downloads.php

安装AspectJ

直接双击执行aspectj-1.9.4.jar
安装过程中3个设置我都是默认的 直接next(注意第二步要设置自己已经安装的jdk家目录)

为spring-aspect 工程添加Facets属性

File -> Project Structure -> Facets -> 点击 + 按钮 -> AspectJ -> 选择 spring-aop_main -> 点击OK -> 右键spring-aop_main的Kotlin 选择删除,具体过程如下

同上面给spring-aop_main添加Facets属性一样 给 spring-aspects_main 也添加Facets属性

9、更改编译器

选择 Delegate to Javac ,作用是 只编译AspectJ的Facets

10 再次编译 Build -> Build Project
还是在报错,这时报错的都是 \src\test\ 下面的代码,将这下面的代码都注释掉重新Build Project

这一路犹如西天取源码!!!功夫不负有心人最终取得源码!!!

最后:

我们身为技术人员,最怕的就是安于现状,一直在原地踏步,那么你可能在30岁就会迎来自己的职业危机,因为你工作这么久提升的只有自己的年龄,技术还是万年不变!

如果你想在未来能够自我突破,圆梦大厂,那或许以上这份Java学习资料,你需要阅读阅读,希望能够对你的职业发展有所帮助。

获取方式: 只需你**点赞+关注**后,进[Java架构资源交流群] ,找管理员获取哦-!

在这里插入图片描述


版权声明:本文为m0_58476125原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。