文章目录
版本
spring : spring-framework-5.2.12.RELEASE
gradle: gradle-5.6.4-bin.zip
这个gradle版本是通过源码确定的, 源码下载解压, 源码->gradle->wrapper目录下, gradle-wrapper.properties中:
distributionUrl=gradle-5.6.4-bin.zip(这个值是修改后的值), 通过这个值下载gradle, 将压缩包放到wrapper下一份
gradle下载地址: https://services.gradle.org/distributions/
安装gradle
上面介绍的是获取gradle的版本, 同时放一份到源码目录->gradle->wrapper目录下并修改配置文件, 是为了编译时不去下载。下面是安装gradle。
将gradle解压到制定位置, 我的是: D:\gradle 目录,这个也就是我的gradle安装目录。
安装目录下命令行创建一个本地仓库: mkdir .gradle
配置环境变量
- 新建变量: GRADLE_HOME, 为gradle的安装目录, 即: D:\gradle\gradle-5.6.4-bin\gradle-5.6.4
- 新建变量: GRADLE_USER_HOME, 为本地仓库目录, 上面建的, 即: D:\gradle.gradle
- 在Path中,添加:%GRADLE_HOME%\bin
配置gradle默认镜像
在gradle仓库中(.gradle目录下),新建一个init.gradle文件,其中写入:
allprojects{
repositories {
mavenLocal()
maven { url "https://maven.aliyun.com/nexus/content/groups/public/"}
def ALIYUN_REPOSITORY_URL = 'https://maven.aliyun.com/repository/public/'
def ALIYUN_JCENTER_URL = 'https://maven.aliyun.com/repository/jcenter/'
def ALIYUN_GOOGLE_URL = 'https://maven.aliyun.com/repository/google/'
def ALIYUN_GRADLE_PLUGIN_URL = 'https://maven.aliyun.com/repository/gradle-plugin/'
all { ArtifactRepository repo ->
if(repo instanceof MavenArtifactRepository){
def url = repo.url.toString()
if (url.startsWith('https://repo1.maven.org/maven2/')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_REPOSITORY_URL."
remove repo
}
if (url.startsWith('https://jcenter.bintray.com/')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_JCENTER_URL."
remove repo
}
if (url.startsWith('https://dl.google.com/dl/android/maven2/')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_GOOGLE_URL."
remove repo
}
if (url.startsWith('https://plugins.gradle.org/m2/')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_GRADLE_PLUGIN_URL."
remove repo
}
}
}
maven { url ALIYUN_REPOSITORY_URL }
maven { url ALIYUN_JCENTER_URL }
maven { url ALIYUN_GOOGLE_URL }
maven { url ALIYUN_GRADLE_PLUGIN_URL }
}
}
验证
打开命令行, 输入 gradle -v, 出现版本信息, 说明安装成功。
预编译spring
进入到源码目录下:
1、打开build.gradle文件
// 根据实际情况注释掉plugins下的这个, 否则会报错, 网上看别人的没报错...
//id 'io.spring.gradle-enterprise-conventions' version '0.0.2'
// 找到repositories, 修改仓库地址
repositories {
maven { url 'https://maven.aliyun.com/repository/spring-plugin' }
}
2、打开settings.gradle文件
// 修改仓库
pluginManagement {
repositories {
gradlePluginPortal()
maven { url 'https://maven.aliyun.com/repository/spring-plugin' }
}
}
// 注释掉spring-aspects
//include "spring-aspects"
3、执行预编译
源码目录下, 命令行执行下面命令, 可能会报错, 慢慢试吧, 我也试出来的, 出现BUILD SUCCESSFUL 字样说明编译成功。
gradlew.bat :spring-oxm:compileTestJava
导入idea
1、导入
然后选择源码目录下的build.gradle文件即可。
2、修改idea中gradle配置
注意第2点那里要这杨设置, 否则后面运行测试程序会提示: No tasks available
3、configure build
漫长的等待, 第一次报错了, 没有成功, 但是好像没啥影响
4、开始构建
漫长的等待, 最后出现下面字样, 构建成功。
CONFIGURE SUCCESSFUL in 8m 44s
测试程序
file->module->选gradle、java, ArtifactId和groupId自己写, 结构如下:
新建module中build.gradle中添加依赖:
dependencies {
// testCompile group: 'junit', name: 'junit', version: '4.12'
implementation 'junit:junit:4.12'
testCompile group: 'junit', name: 'junit', version: '4.12'
compile(project(":spring-context"))
compile(project(":spring-beans"))
compile(project(":spring-instrument"))
compile(project(":spring-core"))
compile 'junit:junit:4.12'
compile group: 'org.hamcrest', name: 'hamcrest-core', version: '1.3'
}
TestApp: (TestBean类就不写了, 自己随便写个就行)
package com.zlc;
import com.zlc.bean.TestBean;
import org.junit.Test;
import org.springframework.context.annotation.*;
public class TestApp {
@Test
public void MyTest() {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext("com.zlc.bean");
TestBean bean = context.getBeanFactory().getBean(TestBean.class, false);
System.out.println(bean.getName());
}
}
此时运行Test方法时, 如果gradle中没有2步中第2点配置会提示: No tasks available
配置好后可以运行, 但是依然报错:
这个错误的解决办法是在spring-core -> kotlin-coroutines -> src -> main -> kotlin -> org.framework.core -> CoroutinesUtils.kt
上右键并点击Build Module 'spring-kotlin-coroutines.main'
完美运行, 收官!
参考
https://blog.csdn.net/m_q_l_/article/details/111187545
https://blog.csdn.net/guyexiangyun/article/details/106527732
https://www.it610.com/article/1295306604677242880.htm