Spring-boot 2.3.x源码基于Gradle编译过程详解

 更新时间:2020年12月07日 10:02:23   作者:@遇见O_o  
这篇文章主要介绍了Spring-boot 2.3.x源码基于Gradle编译过程详解,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

spring Boot源码编译

1. git上下拉最新版的spring Boot

下载:git clone git@github.com:spring-projects/spring-boot.git,建议下载release版本,不会出现奇奇怪怪的错误

在这里插入图片描述

2.修改下载源,

gradle\wrapper中的配置文件

gradle-wrapper.properties

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
#distributionUrl=https\://services.gradle.org/distributions/gradle-6.4-bin.zip
//这里Gradle换成你自己存放gradle的路径以及gradle的压缩包名
//这里需要注意的是gradle版本问题,尽量高一点儿,就是用了gradle-4.9的版本,导致报错gradle-api plugins问题,还缺包啥的,换了包之后就没问题了
distributionUrl=file:///E:/Gitee_repository/Java_Sources_Code_Study/Spring-Boot-2.3.1/gradle-6.5.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

buildSrc下的build.gradle

plugins {
	id "java-gradle-plugin"
	//可能是原有的编译环境,注释掉,否则报错
	//id "io.spring.javaformat" version "${javaFormatVersion}"
	id "checkstyle"
}

repositories {
	maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
	maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter' }
	maven { url "https://repo.spring.io/plugins-release" }
	mavenCentral()
	gradlePluginPortal()
	maven { url "https://repo.spring.io/release" }
}

sourceCompatibility = 1.8
targetCompatibility = 1.8
.......

settings.gradle

pluginManagement {
	repositories {
		maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
		maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter' }
		maven { url "https://repo.spring.io/plugins-release" }
		mavenCentral()
		gradlePluginPortal()
	}
	resolutionStrategy {
		eachPlugin {
			if (requested.id.id == "io.spring.javaformat") {
				useModule "io.spring.javaformat:spring-javaformat-gradle-plugin:${requested.version}"
			}
		}
	}
}

gradle.properties

javaFormatVersion=0.0.22
#新增如下配置,解决heap堆内存空间不够问题
gradlePropertiesProp=gradlePropertiesValue
sysProp=shouldBeOverWrittenBySysProp
systemProp.system=systemValue
org.gradle.caching=false
org.gradle.jvmargs=-Xms2048m -Xmx4096m 
org.gradle.parallel=true
org.gradle.daemon=true
org.gradle.configureondemand=true

根目录下的build.gradle

// 放在第一行
buildscript {
	repositories {
		maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
		maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter' }
		maven { url "https://repo.spring.io/plugins-release" }
	}
}

allprojects {
	group "org.springframework.boot"

	repositories {
		maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
		maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter' }
		mavenCentral()
		if (!version.endsWith('RELEASE')) {
			maven { url "https://repo.spring.io/milestone" }
		}
		if (version.endsWith('BUILD-SNAPSHOT')) {
			maven { url "https://repo.spring.io/snapshot" }
		}
	}

	configurations.all {
		resolutionStrategy.cacheChangingModulesFor 60, "minutes"
	}
}

seetings.gradle

pluginManagement {
	repositories {
		maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
		maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter' }
		mavenCentral()
		gradlePluginPortal()
		maven {
			url 'https://repo.spring.io/plugins-release'
		}
		if (version.endsWith('BUILD-SNAPSHOT')) {
			maven { url "https://repo.spring.io/snapshot" }
		}
	}
	resolutionStrategy {
		eachPlugin {
			if (requested.id.id == "org.jetbrains.kotlin.jvm") {
				useVersion "${kotlinVersion}"
			}
			if (requested.id.id == "org.jetbrains.kotlin.plugin.spring") {
				useVersion "${kotlinVersion}"
			}
		}
	}
}

2. idea导入

在编译的时候点击取消,配置idea

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3.开始编译

在这里插入图片描述

至此撒花编译成功!

在这里插入图片描述

不过后面还有好长时间的检测,不知道是什么鬼??

在这里插入图片描述

到此这篇关于Spring-boot 2.3.x源码基于Gradle编译过程详解的文章就介绍到这了,更多相关Spring-boot 2.3.x源码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用stream的Collectors.toMap()方法常见的问题及解决

    使用stream的Collectors.toMap()方法常见的问题及解决

    这篇文章主要介绍了使用stream的Collectors.toMap()方法常见的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • MyBatis中${} 和 #{} 有什么区别小结

    MyBatis中${} 和 #{} 有什么区别小结

    ${} 和 #{} 都是 MyBatis 中用来替换参数的,它们都可以将用户传递过来的参数,替换到 MyBatis 最终生成的 SQL 中,但它们区别却是很大的,今天通过本文介绍下MyBatis中${} 和 #{} 有什么区别,感兴趣的朋友跟随小编一起看看吧
    2022-11-11
  • Java线程通信中关于生产者与消费者案例分析

    Java线程通信中关于生产者与消费者案例分析

    这篇文章主要介绍了Java线程通信中关于生产者与消费者案例,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • Java数组与堆栈相关知识总结

    Java数组与堆栈相关知识总结

    今天给大家带来的是关于Java的相关知识,文章围绕着Java数组与堆栈展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • JavaWeb利用struts实现文件下载时改变文件名称

    JavaWeb利用struts实现文件下载时改变文件名称

    这篇文章主要为大家详细介绍了JavaWeb利用struts实现文件下载时改变文件名称的相关资料,需要的朋友可以参考下
    2016-06-06
  • SpringBoot实现连接nacos并支持多环境部署

    SpringBoot实现连接nacos并支持多环境部署

    这篇文章主要介绍了SpringBoot实现连接nacos并支持多环境部署方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • 关于spring循环依赖问题及解决方案

    关于spring循环依赖问题及解决方案

    这篇文章主要介绍了关于spring循环依赖问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • Maven排除依赖和可选依赖的使用方法

    Maven排除依赖和可选依赖的使用方法

    我们知道Maven依赖具有传递性,例如A依赖于B,B依赖于C,在不考虑依赖范围等因素的情况下,Maven会根据依赖传递机制,将间接依赖C 引入到A中,但如果A出于某种原因,希望将间接依赖C排除,那该怎么办呢,Maven为用户提供了两种解决方式排出和可选
    2023-06-06
  • Springboot中的异步任务执行及监控详解

    Springboot中的异步任务执行及监控详解

    这篇文章主要介绍了Springboot中的异步任务执行及监控详解,除了自己实现线程外,springboot本身就提供了通过注解的方式,进行异步任务的执行,下面主要记录一下,在Springboot项目中实现异步任务,以及对异步任务进行封装监控,需要的朋友可以参考下
    2023-10-10
  • 详解关于IntelliJ IDEA中Schedule for Addition 的问题

    详解关于IntelliJ IDEA中Schedule for Addition 的问题

    本篇文章主要介绍了详解关于 IntelliJ IDEA 中 Schedule for Addition 的问题,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12

最新评论