如何导入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内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • idea2020导入spring5.1的源码的详细教程

    1.先来说下导入环境和工具:     java版本:1.8     idea: idea2020     gradle:gradle5.3 2.gradle的安装     idea导入spring的源码时,每次构建的时候都会去下载gradle,所以如果我们能提前下好gradle可以提高构建速度.     gradle下载地址:https://services.gradle.org/distributions/     上面放的地址可以找到gradle的所有版本.(注意:构建spring源码是有版

  • IDEA2020.1构建Spring5.2.x源码的方法

    内容概览 使用IDEA2020.1构建Spring5.2.x源码 环境 源码:spring5.2.xjdk11.08idea2020.1 spring spring5.2.x源码下载地址 gradle 下载 查看spring使用的gradle版本,这里要记得将distributionUrl指向本地的gradle包,不然还是会去下载的. distributionUrl=file:///H:/download/gradle-5.6.4-bin.zip gradle下载地址 安装 window下,配置

  • Spring实现源码下载编译及导入IDEA过程图解

    一.环境准备 idea版本:IntelliJ IDEA 2019.3.4 gradle版本:gradle-4.10.3 jdk版本:jdk-8u251-windows-x64.exe(1.8.0_251) Spring源码版本:spring-framework-5.1.x 说明:该套spring源码编译导入的环境是本人经过三天的不断调试更改后能够成功编译导入的一套环境,在首次编译成功后又进行了多次的重试均可一次编译成功.如环境与上述不一致,下面的步骤不保证spring源码能编译并导入IDEA百分

  • Idea 搭建Spring源码环境的超详细教程

    本篇主要讲解如何使用Ideal 搭建Spring的源码环境,想必大家都会多多少少去看过Spring的部分源码,一般我们都是直接点进某个Spring类 然后Idea上面去下载 ,但是确实比较麻烦,而且不能添加自己对源码的注释 理解 ,本篇就来解决这个问题,手把手使用Idea 搭建Spring framework ,并且直接在Spring framework项目中添加我们自己的module 来验证环境是否正确. 本过程会比较耗时 而且容易出错 慢慢来吧. 1. clone spring-framew

  • 如何导入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-

  • Spring源码完美导入IDEA的过程

    小伙伴私信我说想要研究下Spring的源码,想让我出一期教程来实现IDEA导入Spring源码,今天它来了~ 版本 :IDEA 2020.2.3 ;Spring 5.0.x ;gradle 4.4.1 ; 先从github上面把 spring 源码下载下来并解压: 切记:解压完成后不要直接用IDEA 打开,因为Spring 的源码是用 gradle 构建的.如果已经用IDEA 打开了请删除后重新解压. 我们找到文件夹 spring-framework-5.0.x\gradle\wrapper 下

  • grade构建阅读spring源码环境 Idea2020.3的过程

    笔者看了很多博客,从早上搞到晚上,终于成功了

  • spring源码下载、编译、debug的详细教程

    零.资源准备及环境配置 记安装时间:2020.02.20 环境准备: 1.idea2019.3.3旗舰版,免费试用30天版本 2.gradle5.6版本 3.jdk1.8.0_202 4.spring源码. spring源码下载链接:https://github.com/spring-projects/spring-framework gradle安装及下载链接:https://gradle.org/install/#helpful-information idea2.019.3.3下载链接:h

  • oracle数据与文本导入导出源码示例

    oracle提供了sqlldr的工具,有时需要讲数据导入到文本,oracle的spool可以轻松实现. 方便的实现oracle导出数据到txt.txt导入数据到oracle. 一.导出数据到txt 用all_objects表做测试 SQL> desc all_objects; Name Null? Type ----------------------------------------- -------- ---------------------------- OWNER NOT NULL

  • spring源码学习之bean的初始化以及循环引用

    实例化方法,把bean实例化,并且包装成BeanWrapper 1.点进这个方法里面. 这个方法是反射调用类中的 factoryMethod 方法. 这要知道@Bean 方法的原理, 实际上spring 会扫描有@bean 注解的方法, 然后把方法名称设置到 BeanDefinition 的 factoryMethod属性中, 接下来就会调到上面截图中的方法实现@Bean 方法的调用. 2. 有参构造函数的时候 determineConstructorsFromBeanPostProcessor

  • 使用Spring源码报错java:找不到类 InstrumentationSavingAgent的问题

    使用Spring源码,报错java:找不到类 InstrumentationSavingAgent 报错如下: Error:(26, 38) java: 找不到符号 符号: 类 InstrumentationSavingAgent 位置: 程序包 org.springframework.instrument 解决办法:在自己测试项目的build.gradle里加上 compile(project(":spring-instrument")) dependencies { compile

  • Spring源码学习之动态代理实现流程

    注:这里不阐述Spring和AOP的一些基本概念和用法,直接进入正题. 流程   Spring所管理的对象大体会经过确定实例化对象类型.推断构造方法创建对象(实例化).设置属性.初始化等等步骤.在对象初始化阶段,Spring为开发者提供了一个BeanPostProcessor接口,它会在对象初始化之前和初始化之后被调用(初始化,不是实例化,对应实例化的是InstantiationAwareBeanPostProcessor接口). public interface BeanPostProcess

  • Spring源码解析之Configuration

    一.@Configuration 1.1 未加@Configuration <!--logback-test.xml,配置不打印日志--> <?xml version="1.0" encoding="UTF-8"?> <configuration> <include resource="org/springframework/boot/logging/logback/base.xml" /> <

随机推荐