spring源码编译
目录
1.spring源码编译
1.1 准备工作
1.2 构建工具准备
1.3 修改build.gradle
1.4 编译工作
1.5 导入项目到idea中
1.spring源码编译
1.1 准备工作
本示例基于 SpringV5.2.7RELEASE+GradleWapper+jdk1.8.0_131编译
环境准备:
- maven
- jdk8+
- idea
源码下载:
- 进入https://github.com/spring-projects/spring-framework
Spring的源码是发布在github上面的 ,下载最新版发布版源码,只要5.x的正式发布(RELEASE)版本就行
稍微介绍版本代号
1.2 构建工具准备
安装源码对应的gradle版本(也可不安装),建议使用gradleWraper中的gradle。
Gadle介绍:
Gradle是个构建系统,能够简化你的编译、打包、测试过程。熟悉Java的同学,可以把Gradle类比成Maven。
Gradle Wrapper的作用是简化Gradle本身的安装、部署。不同版本的项目可能需要不同版本的Gradle,手工部署的话比较麻烦,而且可能产生冲突,所以需要Gradle Wrapper帮你搞定这些事情。
Gradle Wrapper是Gradle项目的一部分。
gradleWraper在该文件中有体现,相当于远程自动下载gradle到本地(所以你可以下载gradle,也可以不下,因为可以使用gradleWraper远程的统一版本):
spring-framework-5.2.7.RELEASE\gradle\wrapper\gradle-wrapper.properties
所以如果你需要下载也最好下载该链接对应的gradle版本
1.3 修改build.gradle
这个文件就相当于我们Maven的pom.xml 管理项目的依赖等信息...
设置镜像
repositories {
maven{ url 'https://maven.aliyun.com/nexus/content/groups/public/'}
maven{ url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'} mavenCentral() maven { url "https://repo.spring.io/libs-spring-framework-build" }
}
1.4 编译工作
按照官网的方式编译:
使用gradlew(gradle-wrapper命令) 先编译oxm:compileTest Java: Precompile spring-oxm with ./gradlew :spring-oxm:compileTestJava
编译compileTestJava模块
打开源码所在文件夹,在windows cmd命令中输入,在windows中当前目录无需输入“./”。
gradlew :spring-oxm:compileTestJava
配置了镜像很快(一两分钟)就能编译完成, 如果要很久说明你的镜像没起作用,如果编译异常请自行百度,每个人的电脑及环境产生的异常都有可能。
常见问题:
下载plugin出现401没有权限:
解决办法:
方案1(没有亲测). 把对应报错的plugin注释掉: 打开build.gradle--->plugins节点:
方案2(亲测有效):
- 将报错的插件去 阿里云仓库中按名字进行搜索, 如果1个都没搜到那还是采用方案1吧
- 如果搜到了开源看到是来自于gradle.plugin或jcenter仓库,并且版本只有0.0.4,没有0.0.2、
- 那这里就要改2个地方:1修改plugin下载镜像 2.修改plugin对应的版本
其他问题看笔记吧
1.5 导入项目到idea中
导入项目到idea中:Import into IntelliJ (File -> New -> Project from Existing Sources -> Navigate to directory -> Select build.gradle)
将项目导入到idea中提示配置gradle,按照如下配置
导入后等待编译,莫急,需要一点点时间,编译完成:
添加测试模块代码:Code away
new->model->gradle-->输入模块名称
编写代码测试ioc功能
1.添加依赖
dependencies {testCompile group: 'junit', name: 'junit', version: '4.12' compile(project(":spring-context"))
}
compile(project(":spring-context")) 代表本项目的
2.随意添加任意bean:
package cn.tulingxueyuan.beans;import org.springframework.stereotype.Service;/**** @Author 徐庶 QQ:1092002729* @Slogan 致敬大师,致敬未来的你*/
@Service
public class UserServiceImpl {public void sayHi(){System.out.println("Hello Spring!");}
}
添加启动配置类:
import cn.tulingxueyuan.beans.UserServiceImpl;
import javafx.application.Application;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;/**** @Author 徐庶 QQ:1092002729* @Slogan 致敬大师,致敬未来的你*/
@Configuration
@ComponentScan("cn.tulingxueyuan")
public class MainStat {public static void main(String[] args) {ApplicationContext context=new AnnotationConfigApplicationContext(MainStat.class);UserServiceImpl bean = context.getBean(UserServiceImpl.class);bean.sayHi();}
}
正确输出,大功告成!
spring源码编译相关推荐
- Spring源码编译报错那些事
Spring源码编译报错那些事(不会吧不会吧,不会真的有人刚学习源码就被劝退了吧
- Gradle教程 Spring源码编译
目录: gradle 安装配置 grovvy 语法介绍 gradle 仓库配置 gradle 配置文件讲解 gradle 案例:springboot + gradle打war包 gradle 多项目案 ...
- Spring源码编译测试
Spring源码编译(以5.3.22版本为例) 参考作者:程序员七哥 https://www.bilibili.com/read/cv11704879/ 出处:bilibili 本项目环境版本介绍: ...
- spring源码编译和导入eclipse
1.下载源码并解压 https://github.com/spring-projects/spring-framework/tree/v3.2.5.RELEASE 2.源码编译 cmd进入spring ...
- Spring源码系列(十三)——Spring源码编译及详细注解
文章目录 1. 环境搭建 2. 代码编译 2.1 编译代码 2.1.1 build.gradle 2.1.1.1 第一处 2.1.1.2 第二处 2.1.2 gradle.properties 2.1 ...
- spring源码编译导入eclipse
由于想更深入的学习下spring,于是下载了spring的源码编译之后导入eclipse.这其中出现了一些问题,虽然最后 工程能够build成功,但是这些问题仍然没有解决. 首先说说自己的一些比较蠢的 ...
- spring源码编译之gradle环境搭建(编译spring源码真的脑阔疼)
官网 Gradle | Installation Gradle Distributions 下载 配置环境变量: GRADLE_HOME:D:\software\gradle-6.0.1-all\gr ...
- Spring源码编译教程(自己复习) 作者 周瑜
1.Spring底层核心原理解析 作者:周瑜 笔记在线更新版:0_0 牛逼的Spring · 语雀 本节课会把Spring中核心知识点都给大家进行串讲,让大家对Spring的底层有一个整体的大致了解, ...
- Spring源码编译及过程中的一些问题总结
1.跳过测试 gradlew build -x test 2.编译失败,提示信息为 Failed to create MD5 hash for file 'F:\code\spring-framewo ...
最新文章
- 全局变量声明的规范化
- model.fit() 参数详解【TensorFlow2入门手册】
- 从达标到卓越 —— API 设计之道
- 灰色预测模型matlab_Matlab数据分析,2020研究生报名人数灰色预测
- 更换百度地图图标html,百度地图接口,自定义图标,点击切换图标
- 员工管理系统数据库课程设计
- Qt使用语言家进行国际化,实现多国语言切换
- 任性与自制力差--拖延症(行为训练)
- PS进阶抠图详解(可以处理头发)
- ZOJ3987(二进制枚举+java大数)
- 陆琪:年薪十万凭什么不能开…
- 线性规划 - 数学建模
- 优化算法(四)——粒子群优化算法(PSO)
- 【DG】DG的3种保护模式
- mysql优化之前缀索引--带案例分析
- sigprocmask , sigpending 和 sigsuspend函数
- C++ int、long、long int、long long、uint64_t字节长度
- 区块链技术应用场景设想
- 把数字金额转换成中文大写数字
- 笑话理解之Devil
热门文章
- 【Mysql】Mysql SQL 大小写规范
- 基于VS和opencv的烟雾识别
- 汽车诊断之UDS入门-0x19(ReadDTCInformation)服务概述
- 技术专栏 | 关于吊舱你了解多少?
- 【面经】高德地图 C++ 研发 二面
- Projective Geometric Algebra, PGA 射影几何代数. SIGGRAPH 2019 Course Notes. Chpt. 4
- python numba_用 Numba 加速你的 Python 代码,性能轻松大提升
- Linux上安装rz、sz
- 节流与防抖原理及实现
- 健身训练后肌肉酸痛的原因