欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > 【spring专题】编译spring5.3源码

【spring专题】编译spring5.3源码

2025/1/23 3:45:39 来源:https://blog.csdn.net/web18285482512/article/details/145287232  浏览:    关键词:【spring专题】编译spring5.3源码
文章目录
  • 1. 环境配置
  • 2. 拉取代码
    • 2.1克隆到gitee
    • 2.2 下载到本地
    • 2.3 切换分支
    • 2.4 重新导入
  • 3. 环境配置
    • 3.1 安装gradle-方法1
    • 3.2 安装gradle-方法2(推荐)
    • 3.3 jdk安装aspectj
    • 3.4 idea安装AspectJ插件
  • 4. 项目配置
    • 4.1 修改build.gradle
    • 4.2 修改buildSrcuild.gradle
    • 4.3 修改gradlejvm参数(可选)
  • 5 配置和构建
    • 5.1 配置jdk
    • 5.2 配置gradle
    • 5.3 配置aspectj
    • 5.4 构建
  • 6 编译
    • 6.1 设置modules
    • 6.2 编译子项目
    • 6.3 编译整个项目
    • 6.4 可能的编译异常
      • 6.4.1 内存不足
      • 6.4.2 https校验异常
  • 7 简单测试
    • 7.1 新建模块
    • 7.2 引入依赖
    • 7.3 编写代码
    • 7.4 运行
  • 8 mvc例子
    • 8.1 新建模块
    • 8.2 配置
      • 8.2.1 修改build.gradle
      • 8.2.2 spring配置文件
    • 8.3 配置tomcat
    • 8.4 启动tomcat测试

1. 环境配置

  • jdk版本:1.8.0_301
    在这里插入图片描述
  • idea版本:2021.2.2
    在这里插入图片描述
  • 系统版本:win10_64位
    在这里插入图片描述

2. 拉取代码

2.1克隆到gitee

spring的github地址:https://github.com/spring-projects/spring-framework
git: https://github.com/spring-projects/spring-framework.git
下载比较慢,可以先克隆到gitee,再从gitee获取下载地址
在这里插入图片描述
导入成功后,复制我们自己的下载地址
在这里插入图片描述
如果不使用ssh下载到本地,后续运行会有git的错误信息(但是不影响运行)
在这里插入图片描述

2.2 下载到本地

使用idea克隆到本地,我下载到的目录是H盘的spring目录
在这里插入图片描述

2.3 切换分支

完成后选择5.3.x分支,checkout到本地
在这里插入图片描述
完成后是这样的,关闭当前项目,并移除
在这里插入图片描述

2.4 重新导入

选择源码根目录的build.gradle重新导入
在这里插入图片描述
导入后停止构建!!!
导入后停止构建!!!
导入后停止构建!!!
还需要做后续的操作才能构建

3. 环境配置

3.1 安装gradle-方法1

找到本地的文件 H:springgradlewrappergradle-wrapper.properties
打开可以看到5.3.x使用的gradle版本是 gradle-7.5.1-bin.zip
在这里插入图片描述
到官网 https://gradle.org/releases/ 找到我们需要的版本
我只需下载 binary-only:https://gradle.org/next-steps/version=7.5.1&format=bin
在这里插入图片描述
解压后配合环境变量 GRADLE_HOME D:gradle-7.5.1
然后在环境变量path添加 %GRADLE_HOME%in
配置仓库 GRADLE_USER_HOME H:gradle_repository
在这里插入图片描述
检查
cmd输入 gradle -v
在这里插入图片描述
配置文件
在gradle的init.d目录下新建文件 init.gradle,填入下面的内容

// project
allprojects{repositories {mavenLocal()maven { url 'https://maven.aliyun.com/repository/central/' }maven { url 'https://maven.aliyun.com/repository/public/' }maven { url 'https://maven.aliyun.com/repository/google/' }maven { url 'https://maven.aliyun.com/repository/gradle-plugin/' }maven { url 'https://maven.aliyun.com/repository/spring/' }maven { url 'https://maven.aliyun.com/repository/spring-plugin/' }maven { url 'https://maven.aliyun.com/repository/grails-core/' }maven { url 'https://maven.aliyun.com/repository/apache-snapshots/' }maven { url 'https://jitpack.io/' }mavenLocal()mavenCentral()}
}
// plugin
settingsEvaluated { settings ->settings.pluginManagement {// Clear repositories collectionrepositories.clear()// Add my Artifactory mirrorrepositories {mavenLocal()maven {url 'https://maven.aliyun.com/repository/gradle-plugin/'}}}
}

3.2 安装gradle-方法2(推荐)

将下载后的文件放在目录,例如我的是 G:in_repogradlegradle-7.5.1-bin.zip
打开工程的文件 gradlewrappergradle-wrapper.properties
原来的配置

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https://services.gradle.org/distributions/gradle-7.5.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

将distributionUrl修改为
distributionUrl=file:///G:/bin_repo/gradle/gradle-7.5.1-bin.zip
然后找到右侧的gradle刷新按钮点击刷新
同时,idea的gradle配置成 gradle-wrapper.properties
在这里插入图片描述

3.3 jdk安装aspectj

下载地址:https://www.eclipse.org/aspectj/downloads.php
在这里插入图片描述
下载后使用java -jar运行安装
在这里插入图片描述
点击next
在这里插入图片描述
选择安装目录,然后next
在这里插入图片描述
选择aspectj要安装的目录,我就安装在我的jdk目录下,后面配置idea需要用到该目录
然后点击install执行安装
在这里插入图片描述
安装成功
在这里插入图片描述
去到安装目录,可以看到已经安装成功
在这里插入图片描述
lib下的aspectjtools.jar文件后面idea需要配置到,可以先记下
在这里插入图片描述

3.4 idea安装AspectJ插件

打开idea -> plusins安装AspectJ插件
在这里插入图片描述

4. 项目配置

4.1 修改build.gradle

项目跟目录下的build.gradle文件
找到(大概是290行左右)

repositories {mavenCentral()maven { url "https://repo.spring.io/libs-spring-framework-build" }
}

修改成

repositories {mavenLocal()maven { url 'https://maven.aliyun.com/repository/public/' }maven { url 'https://maven.aliyun.com/repository/central' }maven { url 'https://maven.aliyun.com/repository/google/' }maven { url 'https://maven.aliyun.com/repository/gradle-plugin/' }maven { url 'https://maven.aliyun.com/repository/spring' }maven { url 'https://maven.aliyun.com/repository/spring-plugin' }maven { url 'https://jitpack.io/' }mavenCentral()maven { url "https://repo.spring.io/libs-spring-framework-build" }
}

4.2 修改buildSrcuild.gradle

打开项目的 buildSrcuild.gradle
找到

repositories {mavenCentral()gradlePluginPortal()
}

修改成

repositories {mavenLocal()maven { url 'https://maven.aliyun.com/repository/public/' }maven { url 'https://maven.aliyun.com/repository/central' }maven { url 'https://maven.aliyun.com/repository/google/' }maven { url 'https://maven.aliyun.com/repository/gradle-plugin/' }maven { url 'https://maven.aliyun.com/repository/spring' }maven { url 'https://maven.aliyun.com/repository/spring-plugin' }maven { url 'https://jitpack.io/' }mavenCentral()gradlePluginPortal()
}

4.3 修改gradlejvm参数(可选)

项目根目录下的 gradle.properties 文件

version=5.3.26-SNAPSHOT
org.gradle.jvmargs=-Xms2048m -Xmx2048m -XX:MaxPermSize=2048m
org.gradle.caching=true
org.gradle.parallel=true
kotlin.stdlib.default.dependency=false

5 配置和构建

5.1 配置jdk

打开file -> Project Structure
在这里插入图片描述
选择jdk8,然后点击右下角apply应用
在这里插入图片描述

5.2 配置gradle

打开File -> settings
在这里插入图片描述
按照下面的配置好自己的gradle(前面安装gradle方法2的操作)
在这里插入图片描述

5.3 配置aspectj

settings -> Build,Execution,Deplotment -> Compile -> Java Compiler
Use compile选择 Ajc
下面的Project bytecode version 选择1.8
Path to aspectjtools.jar就是前面安装插件时提到的lib目录文件 aspectjtools.jar
记得后面红框内的必须勾选 Generate debug indoDelegate to javac
配置好后勾选apply应用
在这里插入图片描述

5.4 构建

点击刷新按钮 reload all gradle projects
在这里插入图片描述
如果构建过程有超时异常,重复上述操作就好了
成功后
在这里插入图片描述

6 编译

6.1 设置modules

file -> Project Structure 找到modules
设置前是结构是这样的
在这里插入图片描述
选择项目spring-aop右击
在这里插入图片描述
右击添加AspectJ
在这里插入图片描述
spring-aspects也一样操作,做完后目录是这样的
在这里插入图片描述

6.2 编译子项目

gradle -> spring-oxm -> Tasks -> other -> compileTestJava
在这里插入图片描述
编译成功后
在这里插入图片描述

6.3 编译整个项目

gradle -> spring -> Tasks -> build -> build
在这里插入图片描述
编译结束后
在这里插入图片描述

6.4 可能的编译异常

6.4.1 内存不足

关闭其他程序释放出内存再重新执行build构建
在这里插入图片描述

6.4.2 https校验异常

异常信息,可以发现异常是由于spring-web模块使用了http引起的
在这里插入图片描述
解决方法
打开根目录下 srccheckstylecheckstyle.xml文件,添加内容

<!-- 过滤spring-web https校验 --><module name="BeforeExecutionExclusionFileFilter"><property name="fileNamePattern" value="^.*\spring-web\.*$"/></module>

在这里插入图片描述

7 简单测试

7.1 新建模块

项目 -> NEW -> Module
在这里插入图片描述
选择gradle,然后下一步
在这里插入图片描述
填写项目名称
在这里插入图片描述
等待idea构建结束,项目根目录下的settings.gradle已经有刚刚创建的myDemo模块了
在这里插入图片描述

7.2 引入依赖

打开myDemo目录下的build.gradle文件,添加依赖,完整的内容:

description = "Spring Demo"
apply plugin: "kotlin"
group 'org.springframework'
version '5.3.26-SNAPSHOT'repositories {mavenCentral()
}
dependencies {api(project(":spring-context"))testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
}
test {useJUnitPlatform()
}

修改了该文件后,idea 右上角有构建按钮,点击构建
在这里插入图片描述

如果是引用了

plugins {id 'java'
}

则不能使用api,应该使用

dependencies {# 用implementation代替上面的apiimplementation(project(":spring-context"))testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
}

7.3 编写代码

User.java

package com.demo;import org.springframework.stereotype.Component;@Component
public class User {public void printName() {System.out.println("Spring Demo");}
}

MyConfig.java

package com.demo;import org.springframework.context.annotation.ComponentScan;@ComponentScan(value = "com.demo")
public class MyConfig {
}

Test.java

package com.demo;import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class Test {public static void main(String[] args) {AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(MyConfig.class);User user = (User) applicationContext.getBean("user");user.printName();}
}

完整的目录结构
在这里插入图片描述

7.4 运行

运行Test的main方法可以看到控制台已经打印出User返回的内容
在这里插入图片描述

8 mvc例子

8.1 新建模块

项目右击 --> new --> Module
在这里插入图片描述
gradle --> 勾选java和web
在这里插入图片描述
填写项目名称和路径,然后点击finish等待构建完成
在这里插入图片描述
构建完成后的目录
在这里插入图片描述

8.2 配置

8.2.1 修改build.gradle

添加mvc的依赖

api(project(":spring-webmvc"))

完整的内容,修改后点击构建按钮

plugins {id 'war'id 'java'
}
apply plugin: "kotlin"
group 'org.springframework'
version '5.3.26-SNAPSHOT'repositories {mavenCentral()
}dependencies {api(project(":spring-webmvc"))testImplementation 'junit:junit:4.11'testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
}test {useJUnitPlatform()
}
8.2.2 spring配置文件
  1. 在webapp下创建创建WEB-INF目录,然后在WEB-INF目录下创建web.xml
    web.xml的内容:

    <?xml version="1.0" encoding="UTF-8"?>

      <display-name>Archetype Created Web Application</display-name><servlet><servlet-name>dispatcher</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/spring.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>dispatcher</servlet-name><url-pattern>/</url-pattern></servlet-mapping>
    
  2. 在WEB-INF目录下创建spring.xml
    spring.xml的内容:

    <?xml version="1.0" encoding="UTF-8"?>


    <mvc:annotation-driven />
    <context:component-scan base-package=“com.demo”/>

  3. 创建controller
    在java下创建包名 com.demo
    创建 TestController.java

    package com.demo;

    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;

    @RestController
    public class TestController {

    @RequestMapping(value = “test”)
    public String test() {
    return “hello mvc”;
    }
    }

完成的目录
在这里插入图片描述

8.3 配置tomcat

添加本地的tomcat
在这里插入图片描述
在这里插入图片描述
选择部署的war包
选择 Deployment --> Artifact
在这里插入图片描述
选择我们的war,这里随便哪个都行,下面的那个支持debug时热部署
在这里插入图片描述
修改下面的项目名称,我修改成mvc
在这里插入图片描述

8.4 启动tomcat测试

在这里插入图片描述
启动成功
在这里插入图片描述
测试访问
浏览输入访问地址 http://localhost:8080/mvc/test 能正常出来我们返回的内容
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com