如何导入spring源码到IDEA

 更新时间:2021年03月22日 10:17:11   作者:small_horizon  
这篇文章主要介绍了如何导入spring源码到IDEA,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

环境:IDEA2019.3, jdk1.8.0_191,spring-framework-5.0.5.RELEASE,gradle-4.4.1

前期准备

 1.访问spring官网下载spring framework源码

在这里插入图片描述

spring源码放在了github,点击如下图中的按钮访问(有可能访问不了github官网,可参考此处)

在这里插入图片描述

如下图步骤选择要下载的spring源码版本

在这里插入图片描述

点击code–》Download ZIP下载

在这里插入图片描述

解压到某个目录下

在这里插入图片描述

2.安装gradle

到解压的spring源码目录下spring-framework-5.0.5.RELEASE\gradle\wrapper,打开gradle-wrapper.properties文件查看需要安装的gradle版本(此处:gradle-4.4.1-bin.zip)。

在这里插入图片描述

访问gradle官网https://gradle.org/releases/,下滑找到需要的版本,点击binary-only下载

在这里插入图片描述

直接解压到你想要的目录下

在这里插入图片描述

在gradle的init.d目录下新建build.gradle,写入如下代码。目的是编译源码的时候快些

在这里插入图片描述

allprojects{
 repositories {
  def ALIYUN_REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public'
  def ALIYUN_JCENTER_URL = 'http://maven.aliyun.com/nexus/content/repositories/jcenter'
  all { ArtifactRepository repo ->
   if(repo instanceof MavenArtifactRepository){
    def url = repo.url.toString()
    if (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('http://repo1.maven.org/maven2')) {
     project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_REPOSITORY_URL."
     remove repo
    }
    if (url.startsWith('https://jcenter.bintray.com/') || url.startsWith('http://jcenter.bintray.com/')) {
     project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_JCENTER_URL."
     remove repo
    }
   }
  }
  maven {
   url ALIYUN_REPOSITORY_URL
   url ALIYUN_JCENTER_URL
  }
 }
buildscript{
  repositories {
   def ALIYUN_REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public'
   def ALIYUN_JCENTER_URL = 'http://maven.aliyun.com/nexus/content/repositories/jcenter'
   all { ArtifactRepository repo ->
    if(repo instanceof MavenArtifactRepository){
     def url = repo.url.toString()
     if (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('http://repo1.maven.org/maven2')) {
      project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_REPOSITORY_URL."
      remove repo
     }
     if (url.startsWith('https://jcenter.bintray.com/') || url.startsWith('http://jcenter.bintray.com/')) {
      project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_JCENTER_URL."
      remove repo
     }
    }
   }
   maven {
    url ALIYUN_REPOSITORY_URL
    url ALIYUN_JCENTER_URL
   }
  }
 }
}

设置gradle的环境变量(类似设置jdk的环境变量)。新建GRADLE_HOME系统变量,变量值为自己解压的gradle目录

在这里插入图片描述

编辑path变量,在后面追加%GRADLE_HOME%\bin

在这里插入图片描述

cmd输入gradle -v验证是否安装并配置好gradle。如下图所示那样就已经配置好gradle了

在这里插入图片描述

新建gradle仓库(repository),比如:

在这里插入图片描述

这一步可以不做,改下spring源码目录下spring-framework-5.0.5.RELEASE\gradle\wrappe\gradle-wrapper.properties文件的distributionUrl的值(本地安装的gradle路径),不然编译spring源码的时候会去下载gradle

在这里插入图片描述

导入spring源码到IDEA

1.打开spring-framework-5.0.5.RELEASE下的import-into-idea.md,看下官方导入IDEA的步骤

在这里插入图片描述

steps:
1)编译spring-oxm模块,这一步看2.5
2)选择spring-framework-5.0.5.RELEASE下builde.gradle文件导入IDEA
3)排除spring-aspects模块,这一步看2.4

2.导入IDEA步骤

2.1打开IDEA点击import project,不要点open

在这里插入图片描述

然后点击spring-framework-5.0.5.RELEASE下builde.gradle文件

在这里插入图片描述

2.2配置项目的gradle

在这里插入图片描述
在这里插入图片描述

2.3项目配置

在这里插入图片描述
在这里插入图片描述

2.4排除spring-aspects模块

spring-aspects模块使用了aspectJ的jar,所以要先排除。不然很可能中途编译spring源码失败,等到spring源码编译好了可以参考spring源码项目使用spring-aspects,配置

在这里插入图片描述

2.5编译spring-oxm

使用gradle :spring-oxm:compileTestJava编译spring-oxm模块,下图是我这边编译成功的图

在这里插入图片描述

2.6项目build。

项目build要下载spring-framework需要的jar,此过程一般要很长的时间。如果在项目build的过程中失败,可以重新build或者重新打开项目

在这里插入图片描述

2.7查看项目是否build好

项目build好后gradle面板和module面板就是这样的,和刚导入项目时不一样

在这里插入图片描述
在这里插入图片描述

2.8编译其他模块.

可能还有其它模块没有编译(如:spring-web、spring-orm。。。),可以选择spring–>Tasks–>other–>compileTestJava编译其他模块

在这里插入图片描述

编译好的模块下面一般会有build目录,build目录下有个classes目录存放编译好的字节码文件

在这里插入图片描述

3.简单调试

到这里已经构建好了spring源码项目,可以在spring下新建模块来测试环境是否有问题

3.1新建模块

project structure–》modules–》spring–》add–》new module

在这里插入图片描述

确保要新建的模块的信息如下图,然后点击next

在这里插入图片描述

填好parent、模块名称点击finish,点击ok

在这里插入图片描述

稍等一会就可以看到新建的模块

在这里插入图片描述

3.2测试

创建BeanEntity配置类

在这里插入图片描述

新建Test测试,从运行结果看完全没有问题

在这里插入图片描述

注意:我用的环境:IDEA2019.3, jdk1.8.0_191,spring-framework-5.0.5.RELEASE,gradle-4.4.1
环境不同可能中途会有些其他问题

到此这篇关于如何导入spring源码到IDEA的文章就介绍到这了,更多相关导入spring源码到IDEA内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring框架基于AOP实现简单日志管理步骤解析

    Spring框架基于AOP实现简单日志管理步骤解析

    这篇文章主要介绍了Spring框架基于AOP实现简单日志管理步骤解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • Java模拟多线程实现抢票代码实例

    Java模拟多线程实现抢票代码实例

    这篇文章主要介绍了Java模拟多线程实现抢票,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • SpringBoot3集成MyBatis详解

    SpringBoot3集成MyBatis详解

    MyBatis是一款开源的持久层框架,它极大地简化了与数据库的交互流程,MyBatis更具灵活性,允许开发者直接使用SQL语句与数据库进行交互,本文将详细介绍在Spring Boot项目中如何集成MyBatis,以实现对数据库的轻松访问和操作,需要的朋友可以参考下
    2023-12-12
  • Spring Boot + Vue 前后端分离开发之前端网络请求封装与配置

    Spring Boot + Vue 前后端分离开发之前端网络请求封装与配置

    这篇文章主要介绍了Spring Boot + Vue 前后端分离开发之前端网络请求封装与配置方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-05-05
  • Spring AOP日志框架实现过程图解

    Spring AOP日志框架实现过程图解

    这篇文章主要介绍了Spring AOP日志框架实现过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • 本地MinIO存储服务Java远程调用上传文件的操作过程

    本地MinIO存储服务Java远程调用上传文件的操作过程

    MinIO是一款高性能、分布式的对象存储系统,它可以100%的运行在标准硬件上,即X86等低成本机器也能够很好的运行MinIO,这篇文章主要介绍了本地MinIO存储服务Java远程调用上传文件的操作过程,需要的朋友可以参考下
    2023-11-11
  • Java中对象的序列化详解及实例

    Java中对象的序列化详解及实例

    这篇文章主要介绍了 Java中对象的序列化详解及实例的相关资料,需要的朋友可以参考下
    2017-04-04
  • Go&java算法之最大数示例详解

    Go&java算法之最大数示例详解

    这篇文章主要为大家介绍了Go&java算法之最大数示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Java Web最近面试题汇总

    Java Web最近面试题汇总

    在本篇文章里小编给大家整理的是一篇关于Java Web最近面试题汇总内容,需要的朋友们可以学习下。
    2020-02-02
  • Java8新特性之Optional使用详解

    Java8新特性之Optional使用详解

    这篇文章主要介绍了Java8新特性之Optional使用详解,为了解决空指针异常更加优雅,Java8 提供了 Optional 类库,Optional 实际上是个容器,它可以保存类型T的值,或者仅仅保存null,,需要的朋友可以参考下
    2023-08-08

最新评论