自从迈入java开发这个行当,从来没有好好的研究过源码,深感惭愧,话不多说,今天上一篇使用idea编译spring5.0源码。

以下在win中构建和编译过程分为

  1. jdk环境的配置
  2. gradle的下载和安装
  3. spring-framework的下载和构建
  4. 创建新moudle验证编译是否成功

一、window环境下jdk的配置

该部分请不清楚的小伙伴参照其他文章执行,再次不在赘述,本文中使用jdk1.8.0_131

二、spring-frameword 是由gradle构建,下面来下载和安装

下载和选择

  1. 下载地址:https://services.gradle.org/distributions/
  2. 根据spring的版本,当前使用的spring-frameword是使用gradle-4.4编译的,此处选择4.9-bin安装包即可。

安装:

  1. 选择安装路径,最好是英文目录
  2. 解压gradle-4.9-bin.zip
  3. 配置环境变量

GRADLE_HOME:

GRADLE_REPOSTORY_HOME:gradle的仓库地址

  

三、spring-framework 的下载和构建

下载地址1:官网:https://github.com/spring-projects/spring-framework

下载地址2:5.0源码(未编译):https://github.com/escaperun/Spring-Framework-master-5.0.x.git

构建:

构建之前请阅读:spring提供了eclipse和idea两种IDE的方式,本文使用idea

阅读引入idea的文件,发现,在构建直线我们需要预先构建 spring-oxm、spring-core,本文提议使用CMD预先构建如下四个目录

  1. ./gradlew :spring-oxm:compileTestJava
  2. ./gradlew :spring-core:compileTestJava
  3. ./gradlew :spring-context:compileTestJava
  4. ./gradlew :spring-beans:compileTestJava

预编译完成:

5.引入idea  Import into IntelliJ (File -> New -> Project from Existing Sources -> Navigate to directory -> Select build.gradle);

6.引入完成,等待构建完毕,时间长短取决于网速。

No such property: values for class: org.gradle.api.internal.tasks.DefaultTaskDependency
        Possible solutions: values

编译不通过,处理方式:

7. spring-aspects 编译的过程中会出问题,这里我们把它移除

     

8.new Module,然后引入依赖

9. 创建测试方法,然后build

10.执行测试方法

至此,spring源码的编译和测试工作完成,我们可以愉快地进行debug了。

如果没有成功,那么就直接下载吧

编译好的spring5.0地址 :

链接:https://pan.baidu.com/s/1AcQp7KUswXPFoEzXx3X8uA

提取码:p3pk
 

ps:本文有不足支出,还望各位小伙伴批评指正,希望能帮助想了解spring的小伙伴。

使用idea编译spring-framework5.0源码的更多相关文章

  1. 编译hadoop2.2.0源码时报错

    编译hadoop2.2.0源码时, mvn install -DskipTests 报错: [ERROR] COMPILATION ERROR : [INFO] ------------------- ...

  2. [Android 编译(一)] Ubuntu 16.04 LTS 成功编译 Android 6.0 源码教程

    本文转载自:[Android 编译(一)] Ubuntu 16.04 LTS 成功编译 Android 6.0 源码教程 1 前言 经过3天奋战,终于在Ubuntu 16.04上把Android 6. ...

  3. spring security5.0源码导入idea

    资源路径:链接:https://pan.baidu.com/s/1Xep6hzyIF2a0AtFYDeO_bw提取码:6af8 1.解压源码 2.编译源码     windows下:直接双击gradl ...

  4. 编译Spring5.2.0源码

    下载 spring-framework-5.2.0.RELEASE.zip https://github.com/spring-projects/spring-framework/releases 下 ...

  5. VS2015编译TIFF3.8.0源码

    没有CMakeLists.txt,不能使用CMake GUI了.源文件中有makefile.vc,所以使用nmake 进入VS2015命令行 nmake -f makefile.vc 修改nmake. ...

  6. VS2015编译CURL7.54.0源码

    2018.8.24找到一种新途径,运行curl-master\projects\generate.bat,然后curl-master\projects\Windows\VC14\curl-all.sl ...

  7. Ubuntu 16.04 LTS 成功编译 Android 6.0 源码教程

    sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386 \  libx11-dev:i386 ...

  8. MyEclipse中导入Spring 4.0源码

    http://www.cnblogs.com/shi-blog/p/4132183.html

  9. 编译安卓7.0源码出现make: *** [ninja_wrapper] Error 1【转】

    本文转载自:https://blog.csdn.net/u010684585/article/details/76263317 32 warnings generated.ninja: build s ...

  10. Mac上编译并运行Android5.0源码

    下载.配置环境.build和运行参考的都是Android Source提供的文档,包括:Initializing a Build Environment,Downloading the Source和 ...

随机推荐

  1. 微信小程序flex布局

    一.flex布局基础 二.相对定位和绝对定位   flex的容器和元素   主轴(左-右),交叉轴(上-下)     flex容器属性详解 flex-direction 决定元素的排列方向(默认row ...

  2. ios开发介绍

    iOS开发概述 •什么是IOS •什么是IOS开发 •为什么要选择IOS开发 •学习IOS开发的准备   1.什么是iOS   •iOS是一款由苹果公司开发的操作系统(OS是Operating Sys ...

  3. 关于TREEVIEW的ONSELECTEDNODECHANGED事件

    MSDN:http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.treeview.selectednodechanged( ...

  4. WOJ600——水题

    第一次做本校OJ的题,被坑的好惨啊! 题目:600.Minimum  Distance 题目大意:给定平面上3个点A.B.C,求平面上的任一顶点P,使得|PA|+2|PB|+3|PC|. 由于刚好在这 ...

  5. cp - 复制文件和目录

    总览 cp [选项] 文件路径 cp [选项] 文件...目录 POSIX 选项: [-fipRr] GNU 参数(最短形式): [-abdfilprsuvxPR] [-S SUFFIX] [-V { ...

  6. bash - GNU Bourne-Again SHell

    概述(SYNOPSIS) bash [options] [file] 版权所有(COPYRIGHT) Bash is Copyright (C) 1989-2002 by the Free Softw ...

  7. ubuntu apt-update NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32

    Fetched 28.1 MB in 11s (2344 kB/s) W: GPG error: http://archive.canonical.com xenial Release: The fo ...

  8. 计算机中的CPU

    今天写一下计算机中最核心的一部分,就是计算机的大脑---CPU.CPU也就是中央处理器(Central Processing Unit).中央处理器是一块超大规模的集成电路,是一台计算机的运算核心(C ...

  9. Oracle存储过程和程序包

    一.为什么要用存储过程? 如果在应用程序中经常需要执行特定的操作,可以基于这些操作简历一个特定的过程.通过使用过程可以简化客户端程序的开发和维护,而且还能提高客户端程序的运行性能. 二.过程的优点? ...

  10. Java 读取linux上的文件

    今天遇到一个问题,在Windows环境上开发,测试环境和正式环境服务器都是linux: 一个导出表格的功能,在本地没问题,发布到linux服务器就报找不到文件问题,但是模板文件已经在linux下了.刚 ...