栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

构建Spring源码阅读环境

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

构建Spring源码阅读环境

1. 基础环境
名称说明
JDK 1.8.0_144JDK版本
IntelliJ IDEA 2020.1IDEA版本
Gradle-4.10.3Gradle版本
spring-framework-5.1.xSpring源码版本
2. 准备前提

JDK环境IntelliJ IDEA环境Gradle环境 2.1 搭建JDK环境

参考:https://blog.csdn.net/qq_43625140/article/details/108871133

2.2 搭建IDEA环境

参考:https://blog.csdn.net/qq_43625140/article/details/108691749

2.3 搭建Gradle环境

Spring源码基于Gradle构建,需要搭建Gradle环境,这里选用【gradle-4.10.3-all.zip】进行搭建,下载地址如下:

Gradle下载:https://services.gradle.org/distributions

下载好gradle后直接解压缩即可,这里解压目录为【D:DevelopmentToolgradlegradle-4.10.3】

配置gradle环境变量,新建GRADLE_HOME变量,配置Gradle解压目录

在Path变量中添加【%GRADLE_HOME%bin】

cmd命令行测试gradle是否安装成功,输入命令【gradle -version】出现gradle版本如下:

3. 源码搭建

从GitHub下载Spring源码,这里选择从分支【5.1.x】下载zip包进行解压,下载地址如下:

Spring仓库:https://github.com/spring-projects/spring-framework

下载完成后进行解压缩导入IDEA

修改gradle/wrapper/gradle-wrapper.properties

distributionbase=GRADLE_USER_HOME
distributionPath=wrapper/dists
# 使用自己的gradle
distributionUrl=file:///D:/DevelopmentTool/gradle/gradle-4.10.3-all.zip
zipStorebase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

注释gradle/docs.gradle文件中如下部分:

因为Spring源码基于Linux环境发布GitHub仓库,在Windows环境下需要做出部分修改

//dokka {
//	dependsOn {
//		tasks.getByName("api")
//	}
//	doFirst {
//		classpath = subprojects.collect { project -> project.jar.outputs.files.getFiles() }.flatten()
//		classpath += files(subprojects.collect { it.sourceSets.main.compileClasspath })
//
//	}
//	moduleName = "spring-framework"
//	outputFormat = "html"
//	outputDirectory = "$buildDir/docs/kdoc"
//
//	sourceDirs = files(subprojects.collect { project ->
//		def kotlinDirs = project.sourceSets.main.kotlin.srcDirs.collect()
//		kotlinDirs -= project.sourceSets.main.java.srcDirs
//	})
//	externaldocumentationlink {
//		url = new URL("https://docs.spring.io/spring-framework/docs/$version/javadoc-api/")
//		packageListUrl = new File(buildDir, "api/package-list").toURI().toURL()
//	}
//	externaldocumentationlink {
//		url = new URL("https://projectreactor.io/docs/core/release/api/")
//	}
//	externaldocumentationlink {
//		url = new URL("https://www.reactive-streams.org/reactive-streams-1.0.1-javadoc/")
//	}
//}
//asciidoctor {
//	// only output PDF documentation for non-SNAPSHOT builds
//	if (!project.getVersion().toString().contains("BUILD-SNAPSHOT")) {
//		dependsOn 'asciidoctorPdf'
//	}
//	sources {
//		include '*.adoc'
//	}
//	resources {
//		from(sourceDir) {
//			include 'images, '$1')
//			assert shortName != key
//			File xsdFile = subproject.sourceSets.main.resources.find {
//				(it.path.endsWith(schemas.get(key)) || it.path.endsWith(schemas.get(key).replaceAll('\/','\\')))
//			}
//			assert xsdFile != null
//			into (shortName) {
//				from xsdFile.path
//			}
//		}
//	}
//}

在gradle/docs.gradle文件中添加如下部分:

task schemaZip(type: Zip) {
	group = "Distribution"
	baseName = "spring-framework"
	classifier = "schema"
	description = "Builds -${classifier} archive containing all " +
			"XSDs for deployment at https://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
			}
		}
	}
}

修改build.gradle文件,修改内容如下:

Spring需要很多依赖,设置阿里云镜像环境便于加快依赖的下载。

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

根据【import-into-idea.md】文件的描述,先编译spring-oxm模块

构建全部模块

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/712427.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号