使用idea编译spring-framework5.0源码
自从迈入java开发这个行当,从来没有好好的研究过源码,深感惭愧,话不多说,今天上一篇使用idea编译spring5.0源码。
以下在win中构建和编译过程分为
- jdk环境的配置
- gradle的下载和安装
- spring-framework的下载和构建
- 创建新moudle验证编译是否成功
一、window环境下jdk的配置
该部分请不清楚的小伙伴参照其他文章执行,再次不在赘述,本文中使用jdk1.8.0_131
二、spring-frameword 是由gradle构建,下面来下载和安装
下载和选择
- 下载地址:https://services.gradle.org/distributions/
- 根据spring的版本,当前使用的spring-frameword是使用gradle-4.4编译的,此处选择4.9-bin安装包即可。
安装:
- 选择安装路径,最好是英文目录
- 解压gradle-4.9-bin.zip
- 配置环境变量
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预先构建如下四个目录
- ./gradlew :spring-oxm:compileTestJava
- ./gradlew :spring-core:compileTestJava
- ./gradlew :spring-context:compileTestJava
- ./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源码的更多相关文章
- 编译hadoop2.2.0源码时报错
编译hadoop2.2.0源码时, mvn install -DskipTests 报错: [ERROR] COMPILATION ERROR : [INFO] ------------------- ...
- [Android 编译(一)] Ubuntu 16.04 LTS 成功编译 Android 6.0 源码教程
本文转载自:[Android 编译(一)] Ubuntu 16.04 LTS 成功编译 Android 6.0 源码教程 1 前言 经过3天奋战,终于在Ubuntu 16.04上把Android 6. ...
- spring security5.0源码导入idea
资源路径:链接:https://pan.baidu.com/s/1Xep6hzyIF2a0AtFYDeO_bw提取码:6af8 1.解压源码 2.编译源码 windows下:直接双击gradl ...
- 编译Spring5.2.0源码
下载 spring-framework-5.2.0.RELEASE.zip https://github.com/spring-projects/spring-framework/releases 下 ...
- VS2015编译TIFF3.8.0源码
没有CMakeLists.txt,不能使用CMake GUI了.源文件中有makefile.vc,所以使用nmake 进入VS2015命令行 nmake -f makefile.vc 修改nmake. ...
- VS2015编译CURL7.54.0源码
2018.8.24找到一种新途径,运行curl-master\projects\generate.bat,然后curl-master\projects\Windows\VC14\curl-all.sl ...
- Ubuntu 16.04 LTS 成功编译 Android 6.0 源码教程
sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386 \ libx11-dev:i386 ...
- MyEclipse中导入Spring 4.0源码
http://www.cnblogs.com/shi-blog/p/4132183.html
- 编译安卓7.0源码出现make: *** [ninja_wrapper] Error 1【转】
本文转载自:https://blog.csdn.net/u010684585/article/details/76263317 32 warnings generated.ninja: build s ...
- Mac上编译并运行Android5.0源码
下载.配置环境.build和运行参考的都是Android Source提供的文档,包括:Initializing a Build Environment,Downloading the Source和 ...
随机推荐
- hihocoder编程练习赛52-2 亮灯方案
思路: 状态压缩dp.实现: #include <bits/stdc++.h> using namespace std; typedef long long ll; ; ] = {, , ...
- js 将XML字符串解析成XML文档 --- attribute construct error--- 空白字符与空格问题
最近在做xml在线编辑器,遇到一个字符串解析成xml文档的问题,记录一下. 原始xml内容读取自xml文档 <label class="test" id="labe ...
- apache设置无缓存
打开httpd.conf 开启扩展 确保开启 LoadModule headers_module modules/mod_headers.so 添加配置项 并添加以下配置,跟据文件类型来让浏览器每次都 ...
- 一台机器运行多个JBoss多实例
JBossXMLJVMTomcat应用服务器 我们经常会遇到这种情况,有时候希望在同一台机器上部署若干个JBoss实例,上面运行不同的应用程序,这样的话无论由于什么原因需要对某个JBoss实例进行关 ...
- 恩智浦Freescale Cortex-A9 迅为IMX6开发板平台初体验
iTOP-i.MX6 开发板预装 Android4.4 系统,采用 9.7 寸(或者 7 寸或者 4.3 寸)IPS 屏 幕,至少 5 点以上触控,操作流畅,无论是高清视频.游戏等都会有上佳的表现,实 ...
- Java集合(三)--Collection、Collections和Arrays
Collection: Collection是集合类的顶级接口,提供了对集合对象进行基本操作的通用接口方法.Collection接口的意义是为各种具体的集合提供了最大化 的统一操作方式,其直接继承接口 ...
- 原生javascript实现call、apply和bind的方法
var context = {id: 12}; function fun (name, age) { console.log(this.id, name, age) } bind bind() 方法会 ...
- 动态规划----最长公共子序列(C++实现)
最长公共子序列 题目描述:给定两个字符串s1 s2 … sn和t1 t2 … tm .求出这两个字符串的最长公共子序列的长度.字符串s1 s2 … sn的子序列指可以表示为 … { i1 < i ...
- python 3 廖雪峰博客笔记(一) python特性
python 是一种解释性语言,代码在执行时会一行一行翻译成CPU能理解的机器语言. python 的特点是简单优雅. python 的优点是 代码优雅 基础代码库丰富,包括网络.文件.GUI.数据库 ...
- 在git提交时忽略已提交过或从线上拉取下来但本地已修改的文件
一.忽略: git update-index --assume-unchanged [file-path] 命令中的file-path 就是需要忽略提价的文件的路径 例子: git update-in ...