06. 基于Gradle搭建Spring环境

这篇博客详细介绍了如何基于Gradle搭建Spring环境,包括资源准备、IDEA配置、源码导入、构建源码的过程,并分享了在搭建过程中可能遇到的版本不匹配、多余插件、包缺失等问题及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

06 基于Gradle搭建Spring环境

Pt1 资源准备

Pt1.1 安装Gradle

Pt1.2 IDEA配置

Pt1.3 导入源码

Pt2 构建源码

Pt2.1 Gradle Build

Pt2.2 Idea Build Project

Pt3 验证

Pt4 采坑分享

Pt4.1 IDEA和Gradle版本不匹配

Pt4.2 多余的插件

Pt4.3 程序包jdk.jfr不存在


06 基于Gradle搭建Spring环境

Pt1 资源准备

  • IntelliJ IDEA 2020.3.2 (Ultimate Edition)

  • Java version "11.0.10" 2021-01-19 LTS

  • Gradle 6.5

  • Spring 5.3.0-SNAPSHOT

 


Pt1.1 安装Gradle

(1) 下载Gradle

官网:https://gradle.org/releases/

推荐使用gradle4以上的版本,否则不知道是否会有别的兼容性问题。我这边是按照Spring5源码gradle-wrapper.properties中依赖的gradle,选了个相近的版本,gradle-6.5。

 

(2) 配置环境变量

gradle安装比较简单,将gradle目录配置到环境变量即可。

 

(3) 检测gradle环境

通过gradle -v 检测gradle是否正确安装。

 C:\Users\tracy.chen>gradle -v
 ------------------------------------------------------------
 Gradle 6.5
 ------------------------------------------------------------
 ​
 Build time:   2020-06-02 20:46:21 UTC
 Revision:     a27f41e4ae5e8a41ab9b19f8dd6d86d7b384dad4
 ​
 Kotlin:       1.3.72
 Groovy:       2.5.11
 Ant:          Apache Ant(TM) version 1.10.7 compiled on September 1 2019
 JVM:          1.8.0_92 (Oracle Corporation 25.92-b14)
 OS:           Windows 10 10.0 amd64

 


Pt1.2 IDEA配置

 

 


Pt1.3 导入源码

(1) Idea中选择[File]-[New]-[Project from Existing Sources],将源码导入IDEA;

 

(2) 添加阿里云镜像仓库

默认使用的是spring的仓库,由于网络限制,建议再build.gradle中配置国内的阿里提供的镜像仓库下载,下载速度会快很多。

 repositories {
     mavenCentral()
     maven { url "https://repo.spring.io/libs-spring-framework-build" }
     maven { url "https://oss.jfrog.org/artifactory/oss-snapshot-local" }
     maven {url 'https://maven.aliyun.com/nexus/content/groups/public/'} // 加上阿里云仓库
     maven {url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'} // 加上阿里云仓库
 }

 

(3) 修改依赖的gradle版本

gradle-wrapper.properties中描述了依赖的gradle版本,如果跟本地不一致,建议修改成一致的,防止出现意外的兼容性问题。

同时,如果本地安装的Gradle版本和Spring源码中依赖的版本相差太多,也建议本地升级到差不多的版本,防止出现意外的兼容性问题。

 distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip

 

(4) 注释enterprise依赖

将io.spring.gradle-enterprise-conventions这个插件注释掉,否则编译阶段可能会报错。

这行代码可能在build.gradle文件中,也可能在settings.gradle文件中,我的是在settings.gradle中。

 //id "io.spring.gradle-enterprise-conventions" version "0.0.2"

 


Pt2 构建源码

Pt2.1 Gradle Build

使用gradle进行编译,我这边大概花了2个小时才完成编译,要下载大量的jar,最后当你看到BUILD SUCCESSFUL的时候,恭喜你终于成功了。

 > Task :buildSrc:compileJava UP-TO-DATE
 > Task :buildSrc:compileGroovy NO-SOURCE
 > Task :buildSrc:pluginDescriptors UP-TO-DATE
 > Task :buildSrc:processResources UP-TO-DATE
 > Task :buildSrc:classes UP-TO-DATE
 > Task :buildSrc:jar UP-TO-DATE
 > Task :buildSrc:generateSourceRoots UP-TO-DATE
 > Task :buildSrc:assemble UP-TO-DATE
 > Task :buildSrc:pluginUnderTestMetadata UP-TO-DATE
 > Task :buildSrc:compileTestJava NO-SOURCE
 > Task :buildSrc:compileTestGroovy NO-SOURCE
 > Task :buildSrc:processTestResources NO-SOURCE
 > Task :buildSrc:testClasses UP-TO-DATE
 > Task :buildSrc:test SKIPPED
 > Task :buildSrc:validatePlugins UP-TO-DATE
 > Task :buildSrc:check SKIPPED
 > Task :buildSrc:build UP-TO-DATE
 ​
 Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
 Use '--warning-mode all' to show the individual deprecation warnings.
 See https://docs.gradle.org/6.5/userguide/command_line_interface.html#sec:command_line_warnings
 ​
 BUILD SUCCESSFUL in 44s
 ​
 BUILD SUCCESSFUL in 374ms

 


Pt2.2 Idea Build Project

(1) 选择IDEA - [Build Project]

如果直接编译成功,恭喜你,绝对哪里不正常。

如果出现[Kotlin: warnings found and -Werror specified]这个错误,那说明你基本上快搞定了。

 

(2) 编译spring-core

  • 打开IDEA右侧Gradle标签页,双击[spring-core]-[Tasks]-[other]-[cglibRepackJar],看到[BUILD SUCCESSFUL]才说明成功;

  • 然后双击[spring-core]-[other]-[objenesisRepackJar],直到[BUILD SUCCESSFUL];

  • 然后双击[spring-core]-[other]-[compileTestJava],直到[BUILD SUCCESSFUL];

  • 最后双击[spring-core]-[build]-[build],直到[BUILD SUCCESSFUL];

 

(3) 编译spring-framework

双击[spring]-[Tasks]-[build]-[build]进行编译,看到Build成功。

 13:24:56: Executing task 'build'...
 ​
 > Task :buildSrc:compileJava UP-TO-DATE
 > Task :buildSrc:compileGroovy NO-SOURCE
 > Task :buildSrc:pluginDescriptors UP-TO-DATE
 > Task :buildSrc:processResources UP-TO-DATE
 > Task :buildSrc:classes UP-TO-DATE
 > Task :buildSrc:jar UP-TO-DATE
 > Task :buildSrc:assemble UP-TO-DATE
 > Task :buildSrc:pluginUnderTestMetadata UP-TO-DATE
 > Task :buildSrc:compileTestJava NO-SOURCE
 > Task :buildSrc:compileTestGroovy NO-SOURCE
 > Task :buildSrc:processTestResources NO-SOURCE
 > Task :buildSrc:testClasses UP-TO-DATE
 > Task :buildSrc:test NO-SOURCE
 > Task :buildSrc:validatePlugins UP-TO-DATE
 > Task :buildSrc:check UP-TO-DATE
 > Task :buildSrc:build UP-TO-DATE
 > Task :framework-bom:assemble UP-TO-DATE
 > Task :integration-tests:compileJava NO-SOURCE
 > Task :framework-bom:check UP-TO-DATE
 > Task :framework-bom:build UP-TO-DATE
 > Task :integration-tests:processResources NO-SOURCE
 > Task :integration-tests:classes UP-TO-DATE
 > Task :compileKotlin NO-SOURCE
 > Task :spring-core:cglibRepackJar UP-TO-DATE
 > Task :compileJava NO-SOURCE
 > Task :compileGroovy NO-SOURCE
 > Task :processResources NO-SOURCE
 > Task :classes UP-TO-DATE
 > Task :inspectClassesForKotlinIC UP-TO-DATE
 > Task :spring-core:objenesisRepackJar UP-TO-DATE
 > Task :jar UP-TO-DATE
 > Task :assemble UP-TO-DATE
 > Task :checkstyleMain NO-SOURCE
 > Task :integration-tests:jar UP-TO-DATE
 > Task :integration-tests:assemble UP-TO-DATE
 > Task :integration-tests:checkstyleMain NO-SOURCE
 > Task :integration-tests:compileTestFixturesJava NO-SOURCE
 > Task :spring-core:processResources UP-TO-DATE
 > Task :spring-beans:processResources UP-TO-DATE
 > Task :spring-aop:processResources UP-TO-DATE
 > Task :spring-expression:processResources UP-TO-DATE
 > Task :spring-jcl:compileJava UP-TO-DATE
 > Task :spring-jcl:processResources UP-TO-DATE
 > Task :spring-jcl:classes UP-TO-DATE
 > Task :kotlin-coroutines:compileKotlin UP-TO-DATE
 > Task :spring-jcl:jar UP-TO-DATE
 > Task :kotlin-coroutines:compileJava NO-SOURCE
 > Task :kotlin-coroutines:processResources NO-SOURCE
 > Task :kotlin-coroutines:classes UP-TO-DATE
 > Task :kotlin-coroutines:inspectClassesForKotlinIC UP-TO-DATE
 > Task :kotlin-coroutines:jar UP-TO-DATE
 > Task :spring-context:processResources UP-TO-DATE
 > Task :spring-instrument:compileJava UP-TO-DATE
 > Task :spring-instrument:processResources NO-SOURCE
 > Task :spring-instrument:classes UP-TO-DATE
 > Task :spring-tx:processResources UP-TO-DATE
 > Task :spring-instrument:jar UP-TO-DATE
 > Task :spring-oxm:processResources UP-TO-DATE
 > Task :spring-jdbc:processResources UP-TO-DATE
 > Task :spring-orm:processResources NO-SOURCE
 > Task :spring-context-support:processResources UP-TO-DATE
 > Task :spring-web:processResources UP-TO-DATE
 > Task :spring-webmvc:processResources UP-TO-DATE
 > Task :spring-messaging:processResources NO-SOURCE
 > Task :spring-websocket:processResources UP-TO-DATE
 > Task :spring-webflux:processResources UP-TO-DATE
 > Task :spring-test:processResources UP-TO-DATE
 > Task :spring-aop:processTestFixturesResources NO-SOURCE
 > Task :spring-beans:processTestFixturesResources NO-SOURCE
 > Task :spring-tx:processTestFixturesResources NO-SOURCE
 > Task :kotlin-coroutines:assemble UP-TO-DATE
 > Task :integration-tests:processTestResources UP-TO-DATE
 > Task :integration-tests:processTestFixturesResources NO-SOURCE
 > Task :integration-tests:testFixturesClasses UP-TO-DATE
 > Task :integration-tests:checkstyleTestFixtures NO-SOURCE
 > Task :kotlin-coroutines:checkstyleMain NO-SOURCE
 > Task :kotlin-coroutines:compileTestFixturesKotlin NO-SOURCE
 > Task :kotlin-coroutines:compileTestFixturesJava NO-SOURCE
 > Task :kotlin-coroutines:compileTestKotlin NO-SOURCE
 > Task :integration-tests:testFixturesJar UP-TO-DATE
 > Task :kotlin-coroutines:compileTestJava NO-SOURCE
 > Task :kotlin-coroutines:processTestResources NO-SOURCE
 > Task :kotlin-coroutines:testClasses UP-TO-DATE
 > Task :kotlin-coroutines:checkstyleTest NO-SOURCE
 > Task :kotlin-coroutines:processTestFixturesResources NO-SOURCE
 > Task :kotlin-coroutines:testFixturesClasses UP-TO-DATE
 > Task :spring-aop:processTestResources UP-TO-DATE
 > Task :spring-aop:processJmhResources NO-SOURCE
 > Task :kotlin-coroutines:checkstyleTestFixtures NO-SOURCE
 > Task :spring-aspects:processResources UP-TO-DATE
 > Task :kotlin-coroutines:testFixturesJar UP-TO-DATE
 > Task :spring-aspects:processTestResources UP-TO-DATE
 > Task :spring-aspects:processJmhResources NO-SOURCE
 > Task :spring-aspects:processTestFixturesResources NO-SOURCE
 > Task :spring-context:processTestFixturesResources NO-SOURCE
 > Task :spring-context-support:processTestFixturesResources NO-SOURCE
 > Task :spring-beans:processTestResources UP-TO-DATE
 > Task :spring-beans:processJmhResources UP-TO-DATE
 > Task :spring-core:compileKotlin UP-TO-DATE
 > Task :kotlin-coroutines:test NO-SOURCE
 > Task :kotlin-coroutines:check UP-TO-DATE
 > Task :kotlin-coroutines:build UP-TO-DATE
 > Task :spring-context-indexer:compileJava UP-TO-DATE
 > Task :spring-context:processTestResources UP-TO-DATE
 > Task :spring-context:processJmhResources NO-SOURCE
 > Task :spring-core:compileJava UP-TO-DATE
 > Task :spring-core:classes UP-TO-DATE
 > Task :spring-context-support:processTestResources UP-TO-DATE
 > Task :spring-context-support:processJmhResources NO-SOURCE
 > Task :spring-core:inspectClassesForKotlinIC UP-TO-DATE
 > Task :spring-expression:processTestResources UP-TO-DATE
 > Task :spring-expression:processJmhResources NO-SOURCE
 > Task :spring-expression:processTestFixturesResources NO-SOURCE
 > Task :spring-instrument:assemble UP-TO-DATE
 > Task :spring-instrument:compileTestFixturesJava NO-SOURCE
 > Task :spring-instrument:compileTestJava NO-SOURCE
 > Task :spring-core:jar UP-TO-DATE
 > Task :spring-instrument:processTestResources NO-SOURCE
 > Task :spring-core:compileTestFixturesKotlin UP-TO-DATE
 > Task :spring-core:compileTestFixturesJava UP-TO-DATE
 > Task :spring-expression:compileKotlin UP-TO-DATE
 > Task :spring-expression:compileJava UP-TO-DATE
 > Task :spring-expression:classes UP-TO-DATE
 > Task :spring-expression:inspectClassesForKotlinIC UP-TO-DATE
 > Task :spring-expression:jar UP-TO-DATE
 > Task :spring-core:processTestFixturesResources NO-SOURCE
 > Task :spring-core:testFixturesClasses UP-TO-DATE
 > Task :spring-core:testFixturesJar UP-TO-DATE
 > Task :spring-core:assemble UP-TO-DATE
 > Task :spring-core:compileTestKotlin UP-TO-DATE
 > Task :spring-core:compileTestJava UP-TO-DATE
 > Task :spring-core:p
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值