当前位置: 首页 > news >正文

Spring源码本地编译并执行测试

想要熟悉Spring从源码开始是非常重要的,同时Spring内部的优秀设计思想可以借鉴

准备工具

1、spring源码 下载地址:spring源码地址
2、gradle 5.6.4,gradle用来编译构建spring,和maven差不多的工具,配置有差异。下载地址:gradle下载地址
3、idea 我本地用的是2022版本

执行过程

1、spring源码根目录,打开import-into-idea.md,里面有个先执行的命令,cmd执行gradlew.bat :spring-oxm:compileTestJava,看到成功就行
成功就好

2、GRADLE_HOME环境变量配置
系统环境变量
path追加:

3、IDEA引入项目
File- Open- 选择项目打开就行了

4、控制台执行构建命令

 ./gradlew build -x checkstyleMain -x checkstyleTest -x test

这里checkstyleMain 、checkstyleTest 跳过一些无关紧要的错误检查,没关系

执行成功就是这个样子

遇到的错误解决:

1、fatal: not a git repository (or any of the parent directories):
这个是因为你是在一个非 git 仓库的目录执行了 gradle build ,但 spring-framework 的构建脚本某些地方需要使用 git 信息(比如版本号、提交信息)来完成构建 .git 找不到git仓库
本机安装git ,然后,进入spring源码根目录下执行

cd spring-framework-5.2.x
git init
git config --global user.name "Your Name" 随便写名字 email
git config --global user.email "you@example.com"
git add .
git commit -m "init"

2、会报错仓库http请求连不上的话 ,修改maven仓库,根目录settings.gradle文件

repositories {gradlePluginPortal()// maven { url 'https://repo.spring.io/plugins-release' }maven { url 'https://maven.aliyun.com/repository/spring-plugin' }maven { url 'https://maven.aliyun.com/nexus/content/repositories/spring-plugin' }maven { url 'https://repo.spring.io/plugins-release'}}

创建测试demo

在spring项目上右键,创建新的Module,选择gradle,项目 ,DSL语法和spring保持统一Groovy DSL。
test-demo.gradle

apply plugin: 'java'dependencies {implementation  project(':spring-context')testImplementation 'org.junit.jupiter:junit-jupiter:5.9.3'}sourceCompatibility = 1.8
targetCompatibility = 1.8
sourceSets {test {java {srcDirs = ['src/test/java']}}
}test {useJUnitPlatform() // 启用 JUnit 5 平台(必要)
}

spring根目录settings.gradle增加include "test-demo"

编写类文件

package com;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class AppConfig {@Beanpublic HelloService helloService() {return new HelloService();}
}
package com;public class HelloService {public String sayHello() {return "Hello from Spring!";}
}

Test类,

package com;import org.junit.jupiter.api.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class HelloServiceTest {@Testpublic void testHelloServiceTest() {System.out.println("Hello from Spring!");AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);HelloService helloService = context.getBean(HelloService.class);System.out.println("Hello from Spring!");String result = helloService.sayHello();System.out.println("Hello from Spring!"+result);}
}

直接运行测试可能会出问题:
不报错也不执行

既没有报错 也没有执行代码 ,是gradle的测试什么机制导致的,不清楚

解决办法:

改成用idea测试
这样就可以解决测试问题了

还可能有一个问题:

Kotlin1.3版本已经废弃掉


你依赖的模块这个改下版本试试

仍然不管用,可以修改下spring根目录build.gradle追加:

allprojects {afterEvaluate {tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {kotlinOptions {languageVersion = "1.4"      // 可选,避开 1.3 警告apiVersion = "1.4"allWarningsAsErrors = false  // 🚫 彻底关闭freeCompilerArgs += ["-Xsuppress-version-warnings"]}}}
}

运行结果:

测试结果

环境问题很头大,能顺利部署完也看运气,加油

相关文章:

  • 使用php对navicat查看数据库密码?
  • 开机不用输入密码,修改注册表
  • nvue全攻略:从入门到性能优化
  • 短视频矩阵系统开发实战:PHP实现SaaS独立部署
  • Vue-生命周期
  • Jmeter压测手册:脚本配置、服务器环境搭建与运行
  • 将后端数据转换为docx文件
  • 13.18 Ollama+LLaMA3企业级部署实战:6步打造私有化大模型高效引擎
  • <8>-MySQL复合查询
  • 前端三剑客基础案例001
  • 下载指定版本的matplotlib
  • 图片去水印,图片变清晰,完成免费
  • Java并发编程实战 Day 21:分布式并发控制
  • ONLYOFFICE 的AI技巧-1.集成OCR、文本转图像、电子表格集成等新功能
  • aflplusplus:开源的模糊测试工具!全参数详细教程!Kali Linux教程!(一)
  • 激光雷达 + 视觉相机:高精度位姿测量方案详解
  • Altera系列FPGA基于ADV7180解码PAL视频,纯verilog去隔行,提供2套Quartus工程源码和技术支持
  • 多个机器人同时加载在rviz及gazebo同一个场景中
  • Blender 简介 ~ 总结,如何下载Blend格式模型
  • UDS协议中0x31服务(Routine Control)详解及应用
  • 网站设计怎么做链接/图片外链生成工具在线
  • 六安做网站的/湖州seo排名
  • 火车票网站建设/现在最好的营销方式
  • 保定网站建设技术支持/营销推广手段有什么
  • 做建筑钢材的b2b网站有哪些/小游戏推广接单平台
  • 商城网站的建设费用/小学生摘抄新闻