本篇文章引用了多篇文章,但不记得是哪些文章了,当时遇到问题百度记录的。
如果同学发现原创地址,可评论列出,我会在文章中标明。
肯定是多个文章的集合,所以发布为原创
编译准备
- JDK环境(1.8+)
- Gradle环境(匹配spring环境)
注意:gradle环境不要使用spring的下载链接,去官网下载对应版本。具体版本最好与源码中gradle/wrapper/gradle-wrapper.properties中的下载链接版本一致。
修改配置文件
- 修改gradle\wrapper\gradle-wrapper.properties文件内容,让它使用我们自己配置的gradle,要不然它还是会去远程下载。
distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists #distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-bin.zip distributionUrl=file\:~/.gradle/gradle-5.6.4.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists
- build.gradle注释掉一行代码
- build.gradle文件中找到repositories部分,添加阿里云镜像,编译会更快
maven{ url 'https://maven.aliyun.com/nexus/content/groups/public/'} maven{ url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'} maven { url "http://repo.springsource.org/plugins-release" }
- settings.gradle文件并打开,修改repositories部分
maven{ url 'https://maven.aliyun.com/nexus/content/groups/public/'}
进行预编译
# linux/Mac:在配置好gradle环境之后执行
gradle :spring-oxm:compileTestJava
# Windows
gradlew :spring-oxm:compileTestJava
注:正常应该需要几分钟时间
导入IDEA
注意:导入进去后就开始编译了,就需要暂停编译。我这里IDEA版本为2020.3(Mac),不同版本/系统需要找到对应的地方。
测试DEMO
新建gradle模块,修改gradle配置文件,引入依赖
compile(project(":spring-context"))
@Service
public class UserService {
public void sayHello(){
System.out.println("你好呀spring!");
}
}
@Configuration
@ComponentScan("mine.test")
public class App {
public static void main(String[] args) {
ApplicationContext context=new AnnotationConfigApplicationContext(App.class);
UserService bean = context.getBean(UserService.class);
bean.sayHello();
}
}
常见问题
- 每次编译,都会有很多Task,这里settings-Tools-Gradle
-
第1步后经常会报错,CoroutinesUtils找不到该类
点击File -> Project Structure -> Libraries -> + -> Java,然后选择spring-framework/spring-core/kotlin-coroutines/build/libs/kotlin-coroutines-5.2.12.RELEASE.jar,在弹出的对话框中选择spring-core.main,在重新build项目即可
-
第2步后可能会出现另一个问题,找不到InstrumentationSavingAgent
找到报错模块的gradle文件,这里是: spring-context.gradle,把optional修改为compile