【Mac】编译Spring 源码和Idea导入

这篇具有很好参考价值的文章主要介绍了【Mac】编译Spring 源码和Idea导入。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今天我们开始Spring源码的阅读之旅。阅读Spring的源码的第一步当然是编译Spring源码。首先我们要去GitHub上将spring源码给clone下来。

笔者编译环境如下:

Spring版本:5.28
https://github.com/spring-projects/spring-framework/tree/v5.2.8.RELEASE
https://github.com/spring-projects/spring-framework/wiki/Build-from-Source

根据官网的编译文档可知我们需要的JDK版本
自行配置
【Mac】编译Spring 源码和Idea导入,macos,spring,intellij-idea
根据源码路径
spring-framework\gradle\wrapper\gradle-wrapper.properties

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
#distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip
distributionUrl=file\:/Users/xxxx/Source/gradle-8.3/gradle-8.3-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

我们知道当前源码需要的gradle版本以及需要的gradle配置
下载对应的gradle
https://gradle.org/releases/
配置mac环境变量

GRADLE_USER_HOME=/Users/king/JavaLibrary/gradle-8.3
export GRADLE_USER_HOME

还需要在源码上方位置更换成本地gradle

distributionUrl=file\:/Users/xxxx/Source/gradle-8.3/gradle-8.3-bin.zip

进行编译

./gradlew build

发生如下错误

Caused by: org.gradle.jvm.toolchain.internal.NoToolchainAvailableException: No matching toolchains found for requested specification: {languageVersion=21, vendor=any, implementation=vendor-specific} for MAC_OS on x86_64.
        at org.gradle.jvm.toolchain.internal.JavaToolchainQueryService.downloadToolchain(JavaToolchainQueryService.java:180)
        at org.gradle.jvm.toolchain.internal.JavaToolchainQueryService.lambda$query$2(JavaToolchainQueryService.java:146)
        at org.gradle.jvm.toolchain.internal.JavaToolchainQueryService.query(JavaToolchainQueryService.java:146)
        at org.gradle.jvm.toolchain.internal.JavaToolchainQueryService.lambda$resolveToolchain$1(JavaToolchainQueryService.java:124)
        at org.gradle.jvm.toolchain.internal.JavaToolchainQueryService.resolveToolchain(JavaToolchainQueryService.java:122)
        at org.gradle.jvm.toolchain.internal.JavaToolchainQueryService.lambda$findMatchingToolchain$0(JavaToolchainQueryService.java:103)
        at org.gradle.api.internal.provider.DefaultProvider.calculateOwnValue(DefaultProvider.java:72)
        at org.gradle.api.internal.provider.AbstractMinimalProvider.calculateValue(AbstractMinimalProvider.java:108)
        at org.gradle.api.internal.provider.WithSideEffectProvider.calculateOwnValue(WithSideEffectProvider.java:54)
        at org.gradle.api.internal.provider.AbstractMinimalProvider.calculateValue(AbstractMinimalProvider.java:108)
        at org.gradle.api.internal.provider.TransformBackedProvider.calculateOwnValue(TransformBackedProvider.java:82)
        at org.gradle.api.internal.provider.AbstractMinimalProvider.calculateValue(AbstractMinimalProvider.java:108)
        at org.gradle.api.internal.provider.TransformBackedProvider.calculateOwnValue(TransformBackedProvider.java:82)
        at org.gradle.api.internal.provider.AbstractMinimalProvider.calculateValue(AbstractMinimalProvider.java:108)
        at org.gradle.api.internal.provider.AbstractMinimalProvider.withFinalValue(AbstractMinimalProvider.java:164)
        at org.gradle.api.internal.provider.DefaultProperty.finalValue(DefaultProperty.java:133)
        at org.gradle.api.internal.provider.DefaultProperty.finalValue(DefaultProperty.java:26)
        at org.gradle.api.interna

解决方案
找到项目中 spring-core文件夹中的spring-core.gradle文件中下面这行代码将21去掉即可!!!
修改前

multiRelease {
	targetVersions 17 , 21
}

修改后

multiRelease {
	targetVersions 17
}

如果遇到编译测试类错误,多次编译就好
eg:
【Mac】编译Spring 源码和Idea导入,macos,spring,intellij-idea
最终会编译成功
【Mac】编译Spring 源码和Idea导入,macos,spring,intellij-idea
执行下边命令

./gradlew :spring-oxm:compileTestJava

首先我们要对idea进行一些设置,具体如下
【Mac】编译Spring 源码和Idea导入,macos,spring,intellij-idea
然后选择已存在的源进行导入
【Mac】编译Spring 源码和Idea导入,macos,spring,intellij-idea
然后选中原来的项目。具体如下:
【Mac】编译Spring 源码和Idea导入,macos,spring,intellij-idea
记住上面要选build.gradle文件,然后等待idea建立好缓存
【Mac】编译Spring 源码和Idea导入,macos,spring,intellij-idea
这个时候我们需要修改如下的设置,具体如下:
【Mac】编译Spring 源码和Idea导入,macos,spring,intellij-idea
然后我们需要修改运行的配置为idea运行,不然每次idea运行都会通过gradle去编译运行——gradle运行编译特别慢;需要改成idea自己编译运行。具体如下:
【Mac】编译Spring 源码和Idea导入,macos,spring,intellij-idea
再次说明一下这里不是一定要改,但是如果你不改用默认的则会特别慢,改成idea快的不止一点点。

改完之后便可以建一个子model来测试了,但是一定得建gradle的项目,因为spring源码这个父项目就是用gradle来开发的

【Mac】编译Spring 源码和Idea导入,macos,spring,intellij-idea
【Mac】编译Spring 源码和Idea导入,macos,spring,intellij-idea

然后创建好添加以下的依赖。

    api(project(":spring-context"))
    api(project(":spring-aop"))
    optional("org.aspectj:aspectjweaver")
    api(project(":spring-instrument"))

【Mac】编译Spring 源码和Idea导入,macos,spring,intellij-idea
然后开始开始完善项目的其他

配置类的代码

package com.ys;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan("com.ys")
public class AppConfig {
}

service的代码

package com.ys;

import org.springframework.stereotype.Component;

@Component
public class IndexService {
}

测试类的代码

package com.ys;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class Main {
	public static void main(String[] args) {
		AnnotationConfigApplicationContext ac =
				new AnnotationConfigApplicationContext(AppConfig.class);
		System.out.println(ac.getBean(IndexService.class));
	}
}

然后点击运行。
【Mac】编译Spring 源码和Idea导入,macos,spring,intellij-idea
可以看到我们Spring的源码就编译成功,同时测试也成功了。

注意:由于编译在JDK17下,需要用支持JDK17的Idea版本打开调试文章来源地址https://www.toymoban.com/news/detail-684379.html

到了这里,关于【Mac】编译Spring 源码和Idea导入的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Intellij-idea 如何编译maven工程*

    在 Intellij IDEA 中编译 Maven 工程的步骤如下: 打开你的 Maven 工程。如果工程已经在 IDEA 中打开,那么你可以直接进行下一步。如果没有,你可以通过 File - Open 在弹出的对话框中选择你的 Maven 工程路径进行打开。 打开 Maven 项目窗口。在 IDEA 的右边会有一个 Maven 项目的窗口,

    2024年02月02日
    浏览(70)
  • Intellij-idea 如何编译maven工程

    在 IntelliJ IDEA 中编译 Maven 工程是一个相对直接的过程。以下是基本步骤: 1. 打开或导入 Maven 项目 如果您已经有一个现有的 Maven 项目,可以直接在 IntelliJ IDEA 中打开它。选择 File Open,然后浏览到您的 Maven 项目文件夹,选择包含 pom.xml 的目录。 如果您是从现有的源代码导入

    2024年01月25日
    浏览(73)
  • 如何在Intellij-idea如何编译maven工程

    在 IntelliJ IDEA 中编译 Maven 工程,你需要遵循以下步骤: 打开 IntelliJ IDEA :首先,启动 IntelliJ IDEA。 打开 Maven 项目 :在欢迎界面上,选择 \\\"Get from Version Control\\\",然后选择你的 Maven 项目的仓库地址。或者,如果你已经有了项目文件(如  .idea  和  pom.xml ),你可以直接打开这

    2024年01月18日
    浏览(89)
  • zookeeper源码(02)源码编译启动及idea导入

    本文介绍一下zookeeper-3.9.0源码下载、编译及本地启动。 该文件介绍了编译zookeeper需要的环境和命令。 java-1.8.0_102 maven-3.3.9 zookeeper-assembly/target/apache-zookeeper-3.9.0-bin.tar.gz 包目录结构: /bin - 可执行文件及脚本 /conf - 配置文件 /lib - zookeeper包及依赖的包 /docs - 文档 To also build the

    2024年02月08日
    浏览(66)
  • idea如何导入配置Spring Boot项目

    1、打开idea,点击File-open选择要打开的springBoot项目 2、然后配置Maven,选择File-Settings里面的Build ,Excution,Deployement里面的Build Tools里面的Maven,如果没有配置maven镜像,直接使用默认的Bundels(Maven3)点击ok即可,不过这样下载很慢,如果弹出import changes,点击这个即可,如果配置了

    2024年02月17日
    浏览(59)
  • Spring6源码编译、安装

    名称 版本 jdk 17 gradle 8.1.1 spring源码版本 6.0.9 下载并解压 配置环境变量 验证 下载并解压 配置环境变量 验证 配置镜像仓库 spring在Github官网上有详细的说明文档,可以参考,但按照步骤做辉有些报错😅,还是按照自己总结的步骤来吧。 github源码地址 国内gitcode镜像 官方构建

    2024年02月08日
    浏览(45)
  • idea设置自动编译spring boot代码,idea代码修改后无须重启服务立即生效

    系统环境:windows 10 idea版本:IntelliJ IDEA 2022.2.3 (Ultimate Edition) springBoot版本:2.2.6.RELEASE 在Spring Boot开发应用程序时,需经常要进行频繁的代码修改和调试。 为了更好的提高开发效率,希望能够自动编译和热更新应用程序,以便我们在修改代码后无需手动多次进行重新启动应用

    2024年04月13日
    浏览(31)
  • 到了这个年纪,就应该阅读Spring源码了,源码阅读指南-编译加运行

    Spring的源码地址 https://github.com/spring-projects/spring-framework 我们先把他clone下来 没梯子的话多clone几遍就好了 我们这里使用5.x的版本 设置里面gradle设置按照如下图设置即可 😊gradle介绍(插叙手法) 由于Spring源码都是使用Gradle来管理项目 按理来说我们gradle和maven类似,需要在本

    2023年04月09日
    浏览(92)
  • IDEA+spring boot+mybatis+spring mvc+bootstrap+Mysql停车位管理系统源码

    随着时代和科技的进步,人们的生活水平越来越高,私家车的数量不断上涨,随之产生了一些问题,其中就包括停车难,很多地方人们根本找不到停车位,经常有司机为了找停车位转来转去,走了很多弯路,更重要的是浪费了大量的时间。 而停车场车位管理系统可以使司机清

    2024年02月12日
    浏览(44)
  • IDEA+Spring Boot + MyBatis + Layui+Mysql垃圾回收管理系统源码

    本系统实现了垃圾回收管理系统,管理端实现了管理员登录、垃圾回收管理、添加需要回收的垃圾、垃圾去向管理、申请需要打包运出的垃圾、系统公告管理、个人信息管理、修改密码 JDK版本:1.8 Mysql:5.7 账号:好贵啊 密码:123456 点击以下链接获取源码。 IDEA+Spring Boot + MyBati

    2024年02月13日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包