Spring下载
下载spring 命令:
git clone https://github.com/spring-projects/spring-framework.git
下载完成后:
Idea打开源码
当前源码下载完成后,是无法导入到Eclipse或Idea下的,但是下载包里已经提供相应的操作手段。这里将源码转成Idea打开的工程。
在import-into-idea.mdz中,可以看到
- Pre-compile
spring-oxm
with./gradlew cleanIdea :spring-oxm:compileTestJava
- Import into IDEA (File->import project->import from external model->Gradle)
- Set the Project JDK as appropriate (1.8+)
- Exclude the
spring-aspects
module (Go to File->Project Structure->Modules) - Code away
首先,在命令行执行命令:
E:\Workspaces\Spring\spring-framework>gradlew cleanIdea :spring-oxm:compileTestJava
出现问题:
查询可知,这个错误是因为 MaxMetaspace 元空间是java8的新参数,如所以java8以下的版本,jvm是不支持这个参数的。
重装jdk...or 删掉gradlew中的配置信息
问题导致gradle下载失败,因此去单独下载了一个gradle,
gradle-2.10-bin.zip,然后放置在C:\Users\XXX.gradle\wrapper\dists\gradle-2.10-bin\baigpnfu14tdk6ztbfwcl8275路径下,继续执行命令。
然后出现以下问题:
大意就是告诉我们有个jar包下不下来。(目测网络问题)
因此,修改gradle配置。由于刚接触gradle,虽然与maven类似,修改了gradle的配置信息,参照
http://www.yrom.net/blog/2015/02/07/change-gradle-maven-repo-url/
同时,由于spring下的build.gradle配置为
repositories { maven { url "https://repo.spring.io/plugins-release" } }
,在全局配置文件init.gradle中
allprojects{ repositories { def REPOSITORY_URL = 'http://maven.oschina.net/content/groups/public' all { ArtifactRepository repo -> if(repo instanceof MavenArtifactRepository){ def url = repo.url.toString() if (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com/') ||url.startsWith('https://repo.spring.io/plugins-release')) { project.logger.lifecycle "Repository ${repo.url} replaced by $REPOSITORY_URL." remove repo } } } maven { url REPOSITORY_URL } } }
替换为开源中国的仓库。最终,编译成功。
导入项目
TIPS:
在导入后,发现有好几个包无法识别依赖,记得是:
import javax.inject.Provider;
这个依赖始终找不到。最终,经过数次删除,重新下载,最后甚至取出了本地替换gradle的操作,采用原始的直接从
·maven { url "https://repo.spring.io/plugins-release" }·
下载,最终导入到工作空间后,可以正确识别导入包。
在进行编译测试时,
DefaultListableBeanFactoryTests.testLazyInitialization()
方法,初始时会有问题
发生以下错误:
Error:(56, 61) java: -source 1.6 中不支持 diamond 运算符 (请使用 -source 7 或更高版本以启用 diamond 运算符)
此时,打开build.gradle配置
然后,就可以愉快的通过测试了。