SpringBoot官网:https://github.com/spring-projects/spring-boot
SpringBoot项目在2.3.0之前是使用Maven构建项目的,在2.3.0之后是使用Gradle构建项目了
本章将介绍2种方式的源码编译构建
SpringBoot-2.2.5源码编译
SpringBoot-2.2.5 是 Maven构建项目
环境准备
- Maven:3.6.3
- Jdk:1.8.0_181
- idea:2021.1.1 Community Edition(社区版)
1、下载Spring源码
SpringBoot官网:https://github.com/spring-projects/spring-boot
下载版本 :2.2.5
源码中有文件 README.adoc ,可以进行参考如何编译
2、使用Maven编译SpringBoot源码
1、解压SpringBoot源码项目
2、进入SpringBoot源码目录,打开pom文件,可以修改版本号,避免与官网的版本冲突
<properties> <revision>2.2.5.RELEASE-MY</revision> <main.basedir>${basedir}</main.basedir> </properties>
3、使用maven命令进行编译
命令:mvn clean install -DskipTests
编译成功
可能出现的问题
1、问题:Could not find artifact org.springframework.boot:spring-boot-starter-parent:pom:2.2.5.RELEASE in nexus-aliyun (http://maven.aliyun.com/nexus/content/groups/public/)
意思是无法在阿里云的镜像仓库中找到资源
解决:将配置的镜像删除即可,让它从Maven中央仓库中获取资源
2、问题:[ERROR] Failed to execute goal org.apache.maven.plugins:maven-checkstyle-plugin:3.1.0:check (nohttp-checkstyle-validation) on project spring-boot-build: You have 1 Checkstyle violation. -> [Help 1]
代码检测插件问题,
解决:在根目录下的pom文件中,缺少一个属性,添加一个disable.checks属性,如下:
<properties>
<revision>2.2.5.RELEASE-MY</revision>
<main.basedir>${basedir}</main.basedir>
<!-- 添加属性 -->
<disable.checks>true</disable.checks>
</properties>
3、将SpringBoot项目导入Idea中,验证
运行测试文件 org.springframework.boot.BannerTests#testDefaultBanner()
运行成功,编译完成
可能出现的问题
1、问题:java: 服务配置文件不正确, 或构造处理程序对象javax.annotation.processing.Processor: Provider org.springframework.boot.configurationprocessor.ConfigurationMetadataAnnotationProcessor not found时抛出异常错误
解决:错误原因无法找到ConfigurationMetadataAnnotationProcessor类,查看ConfigurationMetadataAnnotationProcessor类是spring-boot-configuration-processor项目中的类,但是项目中的target目录确实没有,当读对spring-boot-configuration-processor项目进行编译,在target目录中生存ConfigurationMetadataAnnotationProcessor类的class文件,即可解决
SpringBoot-2.3.0源码编译
SpringBoot-2.2.5 是 Gradle构建项目
环境准备
- Gradle:6.4(类似Maven构建工具)
- Jdk:1.8.0_181
- idea:2021.1.1 Community Edition(社区版)
1、下载Spring源码
SpringBoot官网:https://github.com/spring-projects/spring-boot
下载版本 :2.3.0
源码中有文件 README.adoc ,可以进行参考如何编译
同上
2、使用Gradle编译SpringBoot源码
1、解压SpringBoot源码项目
2、进入SpringBoot源码目录,打开 gradle.properties 文件,可以修改版本号,避免与官网的版本冲突
version=2.3.0.RELEASE-MY
3、配置项目依赖仓库 与 插件仓库
依赖仓库添加本地maven仓库 与 阿里镜像仓库,文件 build.gradle
allprojects { ...... repositories { // 本地仓库位于USER_HOME/.m2/repository mavenLocal() // aliyun镜像 maven { url 'https://maven.aliyun.com/nexus/content/groups/public/'} mavenCentral() if (!version.endsWith('RELEASE')) { maven { url "https://repo.spring.io/milestone" } } if (version.endsWith('BUILD-SNAPSHOT')) { maven { url "https://repo.spring.io/snapshot" } } } ...... }
插件仓库 添加本地maven仓库 与 阿里镜像仓库,文件 settings.gradle
且将插件 io.spring.gradle-enterprise-conventions 注释
pluginManagement { repositories { // 本地仓库位于USER_HOME/.m2/repository mavenLocal() // aliyun镜像 maven { url 'https://maven.aliyun.com/nexus/content/groups/public/'} mavenCentral() gradlePluginPortal() maven { url 'https://repo.spring.io/plugins-release' } if (version.endsWith('BUILD-SNAPSHOT')) { maven { url "https://repo.spring.io/snapshot" } } } ...... } plugins { id "com.gradle.enterprise" version "3.2" // id "io.spring.gradle-enterprise-conventions" version "0.0.2" }
3、使用gradle命令进行编译构建,-x test 是跳过测试
命令:gradle build -x test
可能出现的问题
1、问题:构建时需要用到一些jar或者插件,用于网络原因无法下载
解决:建议使用代理,进行下载
2、问题:构建时需要用到一些jar或者插件,如:jar无法找到资源。
解决:手动去网上下载资源,然后通过maven命令安装到maven仓库
命令:mvn install:install-file -DgroupId=org.gradle -DartifactId=test-retry-gradle-plugin -Dversion=1.1.3 -Dpackaging=jar -Dfile=test-retry-gradle-plugin-1.1.3.jar
3、将SpringBoot项目导入Idea中,验证
1、导入idea中,配置gradle,使用gradle-6.4版本的
2、运行测试文件 org.springframework.boot.BannerTests#testDefaultBanner()
同上
3、发布到Maven仓库
命令:gradle publishToMavenLocal