1.解决spring源码构建时缺失spring-cglib-repack和spring-objenesis-repack问题

这里是参考出处:

spring 配置文件中 带有el表示式 是如何解析的_java

 

 

spring 配置文件中 带有el表示式 是如何解析的_maven_02

 

如果遇到kolin编译问题,自行安装kotlin插件或者升级下即可

2.接着编译报错:找不到符号: 类 AnnotationBeanConfigurerAspect ,JCacheCacheAspect ,AnnotationAsyncExecutionAspect ,AnnotationCacheAspect ,AnnotationTransactionAspect ,具体如下

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:\workspace_idea\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:\workspace_idea\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:\workspace_idea\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:\workspace_idea\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是class关键字,百度需要aspectj包

解决过程:

3.1下载AspectJ注:

确保下载前安装了jdk
https://www.eclipse.org/aspectj/downloads.php

3.2安装AspectJ

打开 系统cmd 命令行 切换工作目录到 下载的AspectJ 所在目录
执行 java -jar aspectj-1.9.0.jar 进行安装

3.3配置

aop和aspects分别配置,然后删除这两模块的kotlin就可以了

spring 配置文件中 带有el表示式 是如何解析的_spring_03

 

 

4.本人idea2018切换到自己的grader V5.6:报错,com.gradle.build-scan需要2.0.2或者更高版本

报错:

com.gradle.build-scan需要2.0.2或者更高版本,但是不论我怎么制定都不行,百度有人说是idea的版本对gradle有限制,然后我删除idea下的插件重新下载发现,只下载4.4.1
这里暂猜测跟当前spring的版本,配置的gradle以及gradlew.bat的配置有关,使用默认推荐的是可以正常编译的,
gradlew.bat执行的时候下载的是v4.4.1所以,安装gradle根据配置来,build.gradle有配置插件
com.gradle.build-scan 版本,这个与grale每个版本对应关系不兼容,具体查看对应关系下载

spring 配置文件中 带有el表示式 是如何解析的_spring_04

 

5.继续编译时报错,依然报错xxx.jar'. Received status code 401 from server: Unauthorized 

很多条,这里说的是spring仓库要权限验证,百度 了下没有说怎么通过验证,但是给了其他方案,使用阿里云仓库

放了几个他们说的不管用,感觉是仓库不对,就把所有仓库都添加进去,编译成功

build.gradle 的 buildscript 对仓库的配置 标红的即可,由于我开始添加了全部,后面去掉其他的就用了spring-plugin可以正常编译,如果不行再加上其他的
本人喜欢精准,要知道到底来自哪个仓库
repositories {
        gradlePluginPortal()
//        maven { url "https://repo.spring.io/plugins-release" }
//        maven { url "https://maven.aliyun.com/repository/public" }
//        maven { url'https://repo.spring.io/plugins-release-local' }
        //阿里云仓库全家桶
        maven{ url 'https://maven.aliyun.com/repository/central'}
        maven{ url 'https://maven.aliyun.com/repository/public' }
        maven{ url 'https://maven.aliyun.com/repository/google'}
        maven{ url 'https://maven.aliyun.com/repository/gradle-plugin'}
        maven{ url 'https://maven.aliyun.com/repository/spring'}
        maven{ url 'https://maven.aliyun.com/repository/spring-plugin'}
        maven{ url 'https://maven.aliyun.com/mvn/guide'}
        maven{ url 'https://maven.aliyun.com/repository/apache-snapshots'}
    }