spring源码之美<二>:下载spring-framework源码, 并导入到IDE工具中.

基础环境的准备

学习一门语言,当然要从官网开始.

本文需要依赖一些基础环境,其中主要包括了:

  • JDK 8 + (必须)
  • git(必须)

本文的构建环境

  • 操作系统: Ubuntu 17.10
  • JDK: 64-Bit的openjdk:1.8.0_171
  • git :2.14.1

1. 获取spring Framework5的源码.

这一步最终目的就是通过执行命令git clone https://github.com/spring-projects/spring-framework.git获取源码.

  • step1: 通过浏览器输入https://spring.io/进入spring的官网.

spring官网截图

  • step2: 点击上图红框中的PROJECTS导航标签,跳转到spring工程页面.

spring工程集合页面

  • step3: 点击上图红框中SPRING FRAMEWORK标签进入spring framework项目的详情页.

spring framework 详情页面

上图中画了三个框:

红色框跳转到github上的spring framework项目.

紫色框跳转到stackoverflow中的spring的相关问题.

蓝色框点击后可以查看不同版本的spring官方文档.

  • step4: 点击上图的红框跳转到spring framework的github首页.

spring 项目在github上的页面

  • step5: 点击上图的红框中的Clone or download按钮,弹出下拉框.

spring在github上的地址复制按钮

  • step6: 点击上图红框中的按钮,将会把当前项目的git地址复制到剪贴板.

之后通过git命令或者图形化界面clone该项目即可.

git clone https://github.com/spring-projects/spring-framework.git

等待clone进程结束,就已经成功的将spring framework项目的源代码clone到了本地. 此时查看当前目录下,应该会多出一个spring-framework目录,该目录存放的就是spring framework项目的源码.


2. 构建spring源码,并导入到IDE工具内.

spring框架是基于gradle构建的,可能有所区别于目前常用的maven,但是其实gradle的用法并没有想象中那么复杂,大致看一下grovvy语法,之后了解一下gradle常用的一些概念,用时应该不会超过4个小时. 当然,哪怕不了解gradle也并不影响使用.

spring官方提供了构建spring源码的文档,遇到问题可以参考该文档:链接地址
  • 为了避免编译过程中出现因为gradle版本不兼容而引发的问题,建议使用spring项目根目录下的gradlew包装器,而不是本机装的gradle命令.
  • 为了避免编译过程中因为用户权限导致的问题,可以考虑使用root/管理员用户执行命令,linux用户可以考虑在命令前加上sudo命令.
  • 如果本机的JDK版本不对,同时不想修改本地的JDK的话,在spring源码根目录下的gradle.properties添加内容org.gradle.java.home=<jdk目录>来修改编gradle译时使用的jdk.
  • 可以通过添加gradle编译参数来提升编译速度.
#Gradle资源文件
#指定当前项目的JDK(适用于不使用系统环境变量对应的JDK,如果不需要,请注释掉该配置,避免报错.)
org.gradle.java.home=/usr/local/java8
#启用并行编译
org.gradle.parallel=true
#启用编译守护进程
org.gradle.daemon=true
#配置可用编译内存
org.gradle.jvmargs=-Xms256m -Xmx1024m
  • 针对网络问题,最好在编译源码之前修改gradle仓库,提高插件和依赖的下载速度,具体实现方式是将buildscript配置代码块中的repositories和configure(allprojects)配置代码块中的repositories替换为下列代码:
    //配置仓库
    repositories {
        mavenLocal()
        maven { url 'http://maven.aliyun.com/nexus/content/groups/public' }
        maven { url "https://repo.spring.io/plugins-release" }
        maven { url 'https://repo.spring.io/libs-snapshot' }
        maven { url "https://repo.spring.io/snapshot" }
        maven { url "https://repo.spring.io/milestone" }
        mavenCentral()
        jcenter()
        maven {
            url "https://plugins.gradle.org/m2/"
        }
    }
    • build.gradle文件原始内容.
buildscript配置代码块:
buildscript {
        repositories {
                maven { url "https://repo.spring.io/plugins-release" }
        }
        dependencies {
                classpath("io.spring.gradle:propdeps-plugin:0.0.9.RELEASE")
                classpath("org.asciidoctor:asciidoctorj-pdf:1.5.0-alpha.16")
        }
}
...
...
configure(allprojects)配置代码块:
configure(allprojects) { project ->
	...省略部分内容...
	repositories {
		maven { url "https://repo.spring.io/libs-release" }
		maven { url "https://repo.spring.io/snapshot" }  // for Reactor
	}
...省略部分内容...
}
  • 为了提高源码编译速度可以有选择的跳过一些任务,使用./gradlew tasks来查看当前工程可用的任务,然后有选择的排除掉这些任务.比如:
./gradlew build -x testClasses -x test -x javadoc  -x  compileTestKotlin
    • javadoc 生成java文档
    • test 执行单元测试
    • testClasses 组装测试类
  • step1: 构建编译源码

进入spring-freamework目录,并执行命令编译源码.

linux:

cd spring-framework && ./gradlew build 

windows:

cd spring-framework && ./gradlew.cmd build 

tips:

  • 在第一次编译spring源码时,因为需要下载依赖jar包和gradle插件,可能需要很长的时间.
  • gradle的build命令主要用来执行编译和执行单元测试的功能.
  • 第一次编译时报错,单元测试失败Execution failed for task ':spring-webflux:test'.,但是当我再次重新编译时,没有触发错误,多次重新编译,均未重现,所以记录一下吧.
  • setp2:使用idea/eclipse任务生成工程文件.

spring-framework的gradle脚本中已经集成了生成IDE环境的任务代码.

我们可以选择使用gradle集成的任务来生成项目文件.

IDEA

./gradlew idea

Eclipse

./gradlew eclipse

也可以选择使用IDE工具来直接导入项目.

IDEA
点击IDEA左上角的File->Open.
在Open  File or Project窗口选中下载的spring源码目录下的build.gradle文件.
之后弹出Open Project窗口,选择 Open as Project按钮.

IDEA导入spring工程

之后在弹出的Import project from Gradle窗口,进行配置.
其中 Use auto-import可以勾选,其作用是依赖发生变化时,自动导入.
同时还需要在该窗口配置自己的Gradle.
配置完之后就可以选择 OK按钮了.

导入项目时的配置

ECLIPSE

我使用的eclipse是临时下载的官网最新版本(Photon),具体如何安装eclipse可以查看eclipse安装教程.

导入过程

1.首先点击eclipse工程左上角的'File'按钮.
2.然后在弹出的下拉框中点击'Import'按钮.
3.之后在弹出'Import'面板的[Select an import wizard:]下方的输入框中输入'gradle',或者找到Gradle文件夹.
4.选中'Gradle'目录下的'Existing Gradle Project',然后点击next按钮.
5.如果出现welcome界面,直接点击next,如果没有则不处理.
6.在弹出的'Import Gradle Project'面板中 ,选择'Project root directory'后的Browse...按钮,之后在弹出窗口内,选择构建后的spring framework项目源码的根目录,点击next按钮.
7.在弹出的'import Options'面板中根据自己的需要决定是否需要配置Gradle,之后点击next按钮.
8.在弹出的'Import Gradle Project'面板中预览自己的项目信息,如果无误,点击右下方的'Finish'按钮.
9.到此,eclipse开始导入spring framework项目.

转载于:https://my.oschina.net/u/3101282/blog/1837893

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值