Mac下编译、构建spring源码环境

版本选择

  • JDK11
  • gradle 6.4.1
  • Spring-framework 5.3.0
  • Intellij IDEA 2021.1

下载地址

JDK:https://www.oracle.com/java/technologies/javase-jdk11-downloads.html

gradle:https://gradle.org/releases/

Spring-framework:https://github.com/spring-projects/spring-framework/tree/v5.3.0

开始构建

下载 spring-framework 源码

解压 spring-framework 压缩包

这是解压之后的压缩包,当前只需要关注这四个文件

  • build.gradle:类似于 maven 的 pom.xml
  • settings.gradle:用于指示Gradle在构建应用时应将哪些模块包含在内;
  • gradle.properties:主要是gradle 的一些属性配置,例如后台进程内存大小;
  • import-into-idea.md:官方提供的spring源码导入idea的步骤和注意说明

修改配置

  • 修改 settings.gradle 文件,添加上阿里云的 maven 仓库
maven { url "https://maven.aliyun.com/repository/public" }

注意:编译的时候这里可能会报错id "io.spring.gradle-enterprise-conventions" version "0.0.2" ,可以先注释掉

  • 修改gradle.properties文件(这里可以不用改,也可以编译成功)
version=5.3.0
## 设置此参数主要是编译下载包会占用大量的内存,可能会内存溢出
org.gradle.jvmargs=-Xmx2048M
## 开启 Gradle 缓存
org.gradle.caching=true
## 开启并行编译
org.gradle.parallel=true
## 启用新的孵化模式
org.gradle.configureondemand=true
## 开启守护进程 通过开启守护进程,下一次构建的时候,将会连接这个守护进程进行构建,而不是重新fork一个gradle构建进程
org.gradle.daemon=true

kotlin.stdlib.default.dependency=false
  • 修改build.gradle文件,加上使用阿里云仓库
maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'}
  • spring-framework-5.3.0目录下执行预编译
./gradlew :spring-oxm:compileTestJava

提示成功之后就可以导入 idea 了

将源码导入 idea



选择spring-framework,点击 open,idea 会自动 build,这时候就可以在 idea 中配置我们本地环境的 gradle

配置 gradle,选择IntelliJ IDEA-->Preferences-->build-->gradle



提示这个就表示构建成功了

验证

在 spring-framework 项目下创建一个自己的项目




## 修改 build.gradle文件
compile(project(":spring-context"))

编写测试类,运行,如下图所示

package com.nimo.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan("com.nimo")
public class HelloConfig {
}
package com.nimo.dao;


import org.springframework.stereotype.Repository;

@Repository
public class HelloSpring {
    public void hello(){
        System.out.println("---------------------------------");
        System.out.println("Hello spring-framework");
        System.out.println("---------------------------------");
    }
}

补充

参考资料:https://www.cnblogs.com/mazhichu/p/13163979.html

如果编译时有报错,大多数情况都和软件版本有关

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容