文章目录
- [1. 环境配置](#1. 环境配置)
- [2. 拉取代码](#2. 拉取代码)
-
- 2.1克隆到gitee
- [2.2 下载到本地](#2.2 下载到本地)
- [2.3 切换分支](#2.3 切换分支)
- [2.4 重新导入](#2.4 重新导入)
- [3. 环境配置](#3. 环境配置)
-
- [3.1 安装gradle-方法1](#3.1 安装gradle-方法1)
- [3.2 安装gradle-方法2(推荐)](#3.2 安装gradle-方法2(推荐))
- [3.3 jdk安装aspectj](#3.3 jdk安装aspectj)
- [3.4 idea安装AspectJ插件](#3.4 idea安装AspectJ插件)
- [4. 项目配置](#4. 项目配置)
-
- [4.1 修改build.gradle](#4.1 修改build.gradle)
- [4.2 修改buildSrcuild.gradle](#4.2 修改buildSrcuild.gradle)
- [4.3 修改gradlejvm参数(可选)](#4.3 修改gradlejvm参数(可选))
- [5 配置和构建](#5 配置和构建)
-
- [5.1 配置jdk](#5.1 配置jdk)
- [5.2 配置gradle](#5.2 配置gradle)
- [5.3 配置aspectj](#5.3 配置aspectj)
- [5.4 构建](#5.4 构建)
- [6 编译](#6 编译)
-
- [6.1 设置modules](#6.1 设置modules)
- [6.2 编译子项目](#6.2 编译子项目)
- [6.3 编译整个项目](#6.3 编译整个项目)
- [6.4 可能的编译异常](#6.4 可能的编译异常)
-
- [6.4.1 内存不足](#6.4.1 内存不足)
- [6.4.2 https校验异常](#6.4.2 https校验异常)
- [7 简单测试](#7 简单测试)
-
- [7.1 新建模块](#7.1 新建模块)
- [7.2 引入依赖](#7.2 引入依赖)
- [7.3 编写代码](#7.3 编写代码)
- [7.4 运行](#7.4 运行)
- [8 mvc例子](#8 mvc例子)
-
- [8.1 新建模块](#8.1 新建模块)
- [8.2 配置](#8.2 配置)
-
- [8.2.1 修改build.gradle](#8.2.1 修改build.gradle)
- [8.2.2 spring配置文件](#8.2.2 spring配置文件)
- [8.3 配置tomcat](#8.3 配置tomcat)
- [8.4 启动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 collection
repositories.clear()
// Add my Artifactory mirror
repositories {
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 indo 和 Delegate 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代替上面的api
implementation(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配置文件
-
在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> -
在WEB-INF目录下创建spring.xml
spring.xml的内容:
<?xml version="1.0" encoding="UTF-8"?>
<mvc:annotation-driven />
<context:component-scan base-package="com.demo"/>
-
创建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 能正常出来我们返回的内容
