热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

如何导入spring源码到IDEA

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


推荐阅读
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 打开文件管理器_【教程】模组管理器3.1食用指南
    文编:byakko最近有部分小伙伴反应还不会使用unity模组管理器,现在我就给大家讲一下unity模组管理器——从下载到使用。完整视频版以下是无WiF ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 学习笔记(34):第三阶段4.2.6:SpringCloud Config配置中心的应用与原理第三阶段4.2.6SpringCloud Config配置中心的应用与原理
    立即学习:https:edu.csdn.netcourseplay29983432482?utm_sourceblogtoedu配置中心得核心逻辑springcloudconfi ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 20211101CleverTap参与度和分析工具功能平台学习/实践
    1.应用场景主要用于学习CleverTap的使用,该平台主要用于客户保留与参与平台.为客户提供价值.这里接触到的原因,是目前公司用到该平台的服务~2.学习操作 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
author-avatar
咖啡十伴侣
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有