idea搭建gradle阅读spring5源码的环境(详细)
注意事项
- 最好是一步一步按照顺序来进行。
- 先把spring源码拉下来
- 根据spring源码的gradle版本再下载相对应的gradle
- 可能会与idea版本有关(关系不大)
- 善用*
我使用的版本
- spring源码(spring-framework-5.1.10.RELEASE)
- gradle(gradle-4.10.3)
- jdk(1.8.0_73)
- idea(使用了两个版本2020.1和2019.3.4)
下载spring源码
github(下载速度可能比较慢):
gitee(国内下载速度较快)
下载完之后打开源码解压路径下的gradle\wrapper文件夹,打开gradle-wrapper.properties文件查看使用的gradle版本
下载grable
官网(需要*,不然下载很慢)
简书中的云盘(搬运,如有侵权请联系我删除)
下载上面的4.10.3版本
下载完之后解压到本地,然后配置好环境变量,在解压之后的文件夹后新建一个.gradle文件夹用来充当本地仓库
然后在init.d文件夹中新建配置文件init.gradle以配置我们默认的本地仓库
allprojects{
repositories {
def REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public/'
all { ArtifactRepository repo ->
def url = repo.url.toString()
if ((repo instanceof MavenArtifactRepository) && (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com'))) {
project.logger.lifecycle 'Repository ${repo.url} replaced by $REPOSITORY_URL .'
remove repo
}
}
maven {
url REPOSITORY_URL
}
}
}
接下来配置我们的环境变量
导入之前的准备
环境变量配置好后打开cmd测试版本
gradle -v
查看当前gradle的kotlin与groovy版本与spring源码中的是否相同
当前gradle:
spring源码下的build.gradle文件:
如果有版本不对的话需要将spring源码下的build.gradle调整为本地gradle的版本
替换源码docs.gradle文件中的task schemaZip配置
在gradle的构建脚本,只针对Linux系统做了适配,需要把task schemaZip替换成下面代码,因为原有代码的路径符号“/”是针对Linux的,windows使用会有问题,在windows环境需要替换成"",否则会出现如下异常:
* What went wrong:
Failed to capture snapshot of input files for task ':distZip' property 'rootSpec$1$3' during up-to-date check.
> Failed to create MD5 hash for file 'D:\repository\spring-framework-5.0.8.RELEASE\build\distributions\spring-framework-5.0.8.RELEASE-schema.zip'.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 1m 43s
254 actionable tasks: 3 executed, 251 up-to-date
参考如下代码,注释部分是原有的代码:
//task schemaZip(type: Zip) {
// group = "Distribution"
// baseName = "spring-framework"
// classifier = "schema"
// description = "Builds -${classifier} archive containing all " +
// "XSDs for deployment at http://springframework.org/schema."
// duplicatesStrategy 'exclude'
// moduleProjects.each { subproject ->
// def Properties schemas = new Properties();
//
// subproject.sourceSets.main.resources.find {
// it.path.endsWith("META-INF/spring.schemas")
// }?.withInputStream { schemas.load(it) }
//
// for (def key : schemas.keySet()) {
// def shortName = key.replaceAll(/http.*schema.(.*).spring-.*/, '$1')
// assert shortName != key
// File xsdFile = subproject.sourceSets.main.resources.find {
// it.path.endsWith(schemas.get(key))
// }
// assert xsdFile != null
// into (shortName) {
// from xsdFile.path
// }
// }
// }
//}
task schemaZip(type: Zip) {
group = "Distribution"
baseName = "spring-framework"
classifier = "schema"
description = "Builds -${classifier} archive containing all " +
"XSDs for deployment at http://springframework.org/schema."
duplicatesStrategy 'exclude'
moduleProjects.each { subproject ->
def Properties schemas = new Properties();
subproject.sourceSets.main.resources.find {
it.path.endsWith("META-INF\\spring.schemas")
}?.withInputStream { schemas.load(it) }
for (def key : schemas.keySet()) {
def shortName = key.replaceAll(/http.*schema.(.*).spring-.*/, '$1')
assert shortName != key
File xsdFile = subproject.sourceSets.main.resources.find {
it.path.endsWith(schemas.get(key).replaceAll('\\/','\\\\'))
}
assert xsdFile != null
into (shortName) {
from xsdFile.path
}
}
}
}
修改根目录下的gradle.properties,修改如下
org.gradle.daemon=true
org.gradle.jvmargs=-Xmx512m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.parallel=true
org.gradle.configureondemand=true
**spring源码项目中gradle配置默认是从外网下载资源的 我们可以在build.gradle中配置本项目的下载地址
导入项目
以2020.1为例:打开idea选择file–>new -->select file or Directory to Import 选择源码下的build.gradle
设置一下我们idea中的gradle
下方的jvm必须与cmd中gradle查看到的jvm版本相同
再修改kotlin的配置
接下来就可以下载依赖了
接下来执行compileTestJava
执行完之后再进行build操作
等build执行成功之后就搭建完成了
可能会出现的bug
- 下载依赖时报错
Plugin [id: 'io.spring.dependency-management', version: '1.0.5.RELEASE', apply: false] was not found in any of the following sources:
这个问题困扰了我两天 最后通过下载19.3.4版本的idea就ok了,具体原因也不清楚,但是在19.3.4版本中下载完依赖之后就能在20.1版本中运行了
- build时javadoc报错
Execution failed for task ':mylibrary:mavenAndroidJavadocs'.
这个的话我通过参考外网的解决方法解决了
在项目下的build.gradle中添加
tasks.withType(Javadoc).all {
enabled = false
}
引用资料
javadoc报错解决途径
https://blog.csdn.net/Dcwjh/article/details/104471560
推荐阅读
-
荐 使用IDEA搭建一个简单的JavaWeb图书管理项目(详细步骤指导、提供源码)
-
springboot-2.3.x最新版源码阅读环境搭建(基于gradle构建)
-
教你使用IDEA搭建spring源码阅读环境的详细步骤
-
荐 使用IDEA搭建一个简单的JavaWeb图书管理项目(详细步骤指导、提供源码)
-
idea搭建gradle阅读spring5源码的环境(详细)
-
LNMP以源码实现环境搭建的过程(详细)
-
springboot-2.3.x最新版源码阅读环境搭建(基于gradle构建)
-
教你使用IDEA搭建spring源码阅读环境的详细步骤
-
LNMP以源码实现环境搭建的过程(详细)
-
IDEA搭建Spring5.2.x源码阅读环境