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

spring源码代建一次性解决方案

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

spring源码代建一次性解决方案

1、资源及环境说明:

        idea 2021.3.3

        spring 5.2.x

        jdk1.8 or 以上版本

        gradle-6.1版本 (源码版本查看gradle文件夹)

 2、gradle与spring源码下载

        参考文献一进行下载与配置gradle(参考文献在最后,资源版本保持和本文一致)

3、spring源码配置         3.1、gradle-wrapper.properties配置

        路径:根目录gradle/wrapper/gradle-wrapper.properties

        使用下载好的gradle.zip替换原有的路径,这样就不需要去网上在下载,直接下载本地加快构建速度

        注:spring项目中有些地方需要使用到gradle.zip中的依赖,会自动解压

distributionUrl=file:///D:/tools/gradle-6.1-bin.zip
 3.2、build.gradle配置

        路径:根目录/build.gradle

        1、注释io.spring.ge.conventions;避免发生不可避免的错误

 2、更改kotlin版本为1.3.61

3.3 配置gradle阿里镜像 

1、配置build.gradle镜像

        路径:根目录/build.gradle

maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'}

2、配置settings.gradle镜像

        路径:根目录/settings.gradle

maven {url 'https://maven.aliyun.com/repository/public'}

 3.4 解决gradle-6.0不能构建build-scan

1、注释以下内容

        路径:根目录/gradle/spring-module.gradle,注释一下内容

2、注释build-scan

        路径:根目录/build.gradle

3、添加build-scan插件下载路径,走自定义下载路径

        路径:根目录/settings.gradle

plugins {
   id "com.gradle.enterprise" version "3.5"
}
gradleEnterprise {
   server = "https://gradle-enterprise.mycompany.com"
}

 

3.5 解决预编译kotlin循环依赖问题 

路径:根目录/spring-beans/spring-beans.gradle

tasks.named('compileGroovy') {
   classpath = sourceSets.main.compileClasspath
}
tasks.named('compileKotlin') {
   classpath += files(sourceSets.main.groovy.classesDirectory)
}

3.6 解决gradle bulid慢的问题 

路径:根目录gradle.properties

org.gradle.jvmargs=-Xmx2048M
//按需配
org.gradle.configureondemand=true
//开启守护进程
org.gradle.daemon=true

 4、idea导入源码

5、idea配置gradle 

6、等待导入成功 

编译日志如下:

7、预编译 

使用idea工具导入编译可查看import-into-idea.md;具体使用点击compileJava运行

8、源码测试 

1、完成了上面的过程后,我们可以自己编写一个模块测试该源码构建编译过程是否真正成功完成!

步骤:【File】->【New】->【Module…】

在Spring中添加自己的module模块,同样选择gradle构建。

2、新模块Parent:spring,Name:spring-mytest(我们的测试模块作为spring源码的子模块添加进来,下面的配置默认即可)

3、Finish,idea会自动帮助我们构建spring-mytest模块

打开全局配置文件:settings.gradle文件,拉到最下面,我们看到系统自动加上了spring-mytest模块。

 找到我们自己的测试模块spring-mytest,打开build.gradle文件(相当于是pom文件),默认dependencies依赖(这里的dependencies和maven里的依赖是一样的)只有一个junit,我们需要手工添加spring-context,spring-beans,spring-core,spring-aop这4个核心模块,具体如下:

//添加完要构建一下,否则代码中无法引用
compile(project(":spring-context"))
compile(project(":spring-beans"))
compile(project(":spring-core"))
compile(project(":spring-aop"))
testCompile group: 'junit', name: 'junit', version: '4.12'

4、下面编写一个简单的applicationContext获取容器用的bean,主要是测试Spring源码构建编译过程是否成功!

新增实体类:

package com.xieyang.bean;


public class User {
   private String id;
   private String userName;

   public User() {
   }

   public User(String id, String userName) {
      this.id = id;
      this.userName = userName;
   }

   public String getId() {
      return id;
   }

   public void setId(String id) {
      this.id = id;
   }

   public String getUserName() {
      return userName;
   }

   public void setUserName(String userName) {
      this.userName = userName;
   }

   @Override
   public String toString() {
      return "User{" +
            "id='" + id + ''' +
            ", userName='" + userName + ''' +
            '}';
   }
}

 在resources新增spring-test.xml文件




   
      
      
   

最后写一个测试类Test.java

public class MyTest {
   public static void main(String[] args) {
      //AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(JavaConfig.class);
      ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-test.xml");
      User user = (User)applicationContext.getBean("user");
      System.out.println(user.toString());
   }
}

 

 运行,console输出

参考文献:

文献一:

Spring源码编译一次性通过&遇到的坑解决方法

文献二:

gradle6.5不支持build-scan插件-解决办法_belief95的博客-CSDN博客

文献三:

spring5.x.x源码编译完后,spring-beans项目运行compileTestJava报循环依赖错误_lijunlinlijunlin的博客-CSDN博客

文献四:

spring5.3.x源码阅读环境搭建_smart哥的博客-CSDN博客_spring源码搭建

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

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

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