IDEA2019.3.3版本采用Gradle编译Spring5源码(Spring-framework5.0.x)

这篇文章主要介绍了使用IDEA2019.3.3版本采用Gradle编译Spring5源码(Spring-framework5.0.x)的全过程,亲测有效,需要的朋友可以参考一下。

1、Java环境变量

可以选择自己的版本,我采用的是8u212。官网最新版本是[8u241]。(https://www.oracle.com/java/technologies/javase-jdk8-downloads.html)

2、Gradle环境

  1. 源码下载
    GitHub:获取源码比较慢
    GItee:获取源码比较快

  2. 根据源码确定gradle的版本
    打开下载本地目录\spring-framework\gradle\wrapper\gradle-wrapper.properties文件找到distributionUrl,可以看到下载的gradle版本为4.4.1
    distributionUrl=https://services.gradle.org/distributions/gradle-4.4.1-bin.zip

  3. gradle解压
    解压gradle-4.4.1目录结构如下:
    gradle
    在目录下新建.gradle文件夹,配置gradle环境变量需要。

  4. gradle环境配置
    在电脑属性配置新增环境变量GRADLE_HOME

   GRADLE_HOME
   D:\gradle-4.4.1  ##修改自己的gradle解压目录

在电脑属性配置新增环境变量GRADLE_USER_HOME

  GRADLE_USER_HOME
  D:\gradle-4.4.1\.gradle  ##自己新建的文件夹.gradle

Path中添加如下信息

  %GRADLE_HOME%\bin
  %GRADLE_USER_HOME%\bin
  1. 验证gradle环境
    通过win+R->cmd->输入命令gradle -v
    显示信息如下:

version
6. 配置gradle远程仓库
在解压目录int.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
        }
    }
}

3、源码配置

  • 在源码根目录下修改build.gradle文件内容如下:
repositories {
	maven { url 'http://maven.aliyun.com/nexus/content/groups/public/'} ## 新增阿里云仓库
	maven { url "http://repo.springsource.org/plugins-release" }  ## 新增springsource仓库
	maven { url "https://repo.spring.io/plugins-release" }
}

	groovyVersion        = "2.4.12"  ## 修改自己安装的gradle的groovy版本为2.4.12"2.4.17"——》"2.4.12"
  • 在源码根目录下修改gradle.properties文件内容如下:
	version=5.0.17.BUILD-SNAPSHOT 
	org.gradle.daemon=true  ## 新增
	org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m - 	XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8  ## 新增
	org.gradle.parallel=true  ## 新增
	org.gradle.configureondemand=true  ## 新增

4、IDEA配置

idea配置gradle如下图所示(需安装gradle插件

idea gradleidea配置kotlin如下图所示
kotlin

5、依赖下载

  • 点击build进行源码依赖下载,如下图所示:
    build

  • build完成大约需要几个小时,如下图所示:
    在这里插入图片描述

6、源码测试

  • 新建测试模块test,目录如下:
    test
  • 在test模块的build.gradle如下依赖:

   dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile(project(":spring-context")) ## 新增
    compile(project(":spring-beans"))  ## 新增
    compile(project(":spring-core"))  ## 新增
}
  • MyTestBean.java
package com.test.bean;

public class MyTestBean {
	private String testStr = "testStr";

	public String getTestStr() {
		return testStr;
	}

	public void setTestStr(String testStr) {
		this.testStr = testStr;
	}
}
  • 在resource目录下新建test.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
	<bean id="myTestBean" class="com.test.bean.MyTestBean"></bean>

</beans>
  • Test.java
 package com.test;

import com.test.bean.MyTestBean;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.support.BeanDefinitionReader;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;

public class Test {
	public static void main(String[] args) {
		Resource resource = new ClassPathResource("test.xml");
		BeanFactory factory = new DefaultListableBeanFactory();
		BeanDefinitionReader beanDefinitionReader = new XmlBeanDefinitionReader((BeanDefinitionRegistry) factory);
		beanDefinitionReader.loadBeanDefinitions(resource);
		MyTestBean myTestBean = (MyTestBean) factory.getBean("myTestBean");
		System.out.println(myTestBean.getTestStr());

	}
}
  • 运行Test.java,出现如下图结果,证明spring5.0.x项目完美部署成功~:

在这里插入图片描述

参考文献

Spring源码深度解析

如果您觉得有帮助,欢迎点赞哦 ~ ~ 多谢~ ~

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值