安装示例
allprojects {
repositories {
maven { url ‘file:///D:/develop/IDE-Repository’}
mavenLocal()
maven { name “Alibaba” ; url “https://maven.aliyun.com/repository/public” }
maven { name “Bstek” ; url “https://nexus.bsdn.org/content/groups/public/” }
mavenCentral()
}
buildscript {
repositories {
maven { url 'https://maven.aliyun.com/repository/google'}
maven { url 'https://maven.aliyun.com/repository/jcenter'}
maven { url 'https://maven.aliyun.com/nexus/content/groups/public'}
}
}
}
allprojects {
repositories {
maven { url 'file:///D:/develop/IDE-Repository'}
mavenLocal()
maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" }
maven { name "Bstek" ; url "https://nexus.bsdn.org/content/groups/public/" }
mavenCentral()
}
buildscript {
repositories {
maven { url 'https://maven.aliyun.com/repository/google'}
maven { url 'https://maven.aliyun.com/repository/jcenter'}
maven { url 'https://maven.aliyun.com/nexus/content/groups/public'}
}
}
}
repositories中配置获取依赖jar包的顺序:
先是从本地maven仓库中获取
然后mavenLocal()是获取maven本地仓库的路径,和第一条一样,但是不冲突
第三条第四条分别为国内alibaba镜像仓库和国外bstek镜像仓库
最后mavenCentral()是从apache提供的中央仓库中获取依赖jar包
官方下载地址
Spring对应DK版本:
阿里镜像配置
在下载的Spring源码下修改gradle/wrapper/gradle-wrapper.properties文件如下:
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
## distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
## 配置本地gradle, 配置之后需要按下例配置gradle的中央仓库(阿里云maven中央仓库)
distributionUrl=file:///D:/develop/IDE-Gradle/gradle-7.3.1-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
或者distributionUrl配置为distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-7.3-bin.zip
修改Spring源码根目录下build.gradle文件中的repositories:
repositories {
// 配置本地maven仓库
mavenLocal()
// 配置阿里云maven仓库
maven { url "https://maven.aliyun.com/nexus/content/groups/public/" }
maven { url "https://maven.aliyun.com/nexus/content/repositories/jcenter/" }
// maven中央仓库
mavenCentral()
maven { url "https://repo.spring.io/libs-spring-framework-build" }
}
修改Spring源码根目录下settings.gradle文件中pluginManagement下的repositories:
pluginManagement {
repositories {
// 配置阿里云 maven 中央仓库
maven { url 'https://maven.aliyun.com/repository/public/' }
gradlePluginPortal()
maven { url 'https://repo.spring.io/plugins-release/' }
}
}
如果仓库地址不为HTTPS,则需要在仓库地址后加 ‘allowInsecureProtocol=true’:
maven {
url 'http://maven.aliyun.com/repository/public/'
allowInsecureProtocol=true
}
Spring源码所在的文件目录下使用cmd执行 gradlew :spring-oxm:compileTestJava
如某个jar包没下载成功等,只需要重新执行./gradlew :spring-oxm:compileTestJava再次进行预编译就行了。
构建完成之后修改根目录下setting.gradle文件,注释掉spring-aspects:
....
include "spring-aop"
// 移除aspects
// include "spring-aspects"
include "spring-beans"
include "spring-context"
....
Spring源码目录下有 import-into-eclipse.md
和import-into-idea.md
两个文档,分别对应eclipse导入和Idea导入步骤,可参考。
使用 IDEA 选择源码路径下build.gradle
文件导入。
点击File | Settings | Build, Execution, Deployment | Build Tools | Gradle,配置IDEA的Gradle配置:配置Gradle user home
为自己Gradle本地仓库目录
Ctrl+Alt+Shift+S快捷键打开Project Structure。修改工程的SDK,分别将Project、Modules、SDKs中的JDK设置为本地安装的JDK(版本为1.8及以上)。
Ctrl+Alt+Shift+S快捷键打开Project Structure。在Modules中排除spring-aspects:
Alt+F12快捷键打开Terminal,使用gradlew.bat命令进行编译
编译成功后会出现BUILD SUCCESSFUL的提示。如果有报错根据报错信息进行处理,多编译几次即可。
使用shift+shift快捷键输入ApplicationContext类,使用Ctrl+Shift+Alt+U如果能够成功打开类图,也证明Spring源码构建成功
项目右键新建Gradle模块,名称随意,这里取spring-gabriel
修改新建模块build.gradle
文件,导入依赖和配置仓库地址 :
init.d配置 :
repositories {
// 配置本地 maven 仓库
mavenLocal()
// 配置阿里云 maven 仓库
maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter' }
mavenCentral()
}
dependencies {
// 测试需要依赖
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
//导入 spring-context模块, 包含bean工厂
implementation(project(':spring-context'))
//导入spring-instrument 模块, 此模块为 spring-context 模块编译所必须的
implementation(project('::spring-instrument'))
//compile和testCompile已经被gradle 7.x 弃用
//testCompile group: 'junit', name: 'junit', version: '4.12'
//compile(project(":spring-context"))
}
test {
useJUnitPlatform()
}
IDEA默认新建模块后默认Gradle配置名称为build.gradle,需要手动修改为spring-gabriel.gradle
搭建博客及AspectJ搭建
spring-core
spring-beans
spring-context:以core和beans模块为基础构建,提供上下文的构建
spring-context-support:整合第三方库
spring-expression:提供表达式支持
spring-aop:切面模块
spring-aspects:提供AspetJ的集成
spring-instrument:类加载器的实现
spring-instrument-tomcat:模块包含了支持Tomcat的植入代理
spring-messaging:用于消息转递,类似于基于Spring MVC注释的编程模型
spring-jdbc:模块提供了一个JDBC –抽象层
spring-tx:模块支持用于实现特殊接口和所有POJO(普通Java对象)的类的编程和声明式事务 管理
spring-orm:模块为流行的对象关系映射(object-relational mapping )API提供集成层,包括JPA和Hibernate。使用spring-orm模块,您可以将这些O / R映射框架与Spring提供的所有其他功能结合使用,例如前面提到的简单声明性事务管理功能
spring-oxm:模块提供了一个支持对象/ XML映射实现的抽象层
spring-jms:模块(Java Messaging Service) 包含用于生产和消费消息的功能。
spring-web:模块提供基本的面向Web的集成功能,例如多部分文件上传功能,以及初始化一个使用了Servlet侦听器和面向Web的应用程序上下文的IoC容器。它还包含一个HTTP客户端和Spring的远程支持的Web相关部分。
spring-webmvc:模块(也称为Web-Servlet模块)包含用于Web应用程序的Spring的模型-视图-控制器(MVC)和REST Web Services实现。
错误集合
知乎
cdsn1
csdn2
Bean扫描及注册解析