【spring专题】编译spring5.3源码
文章目录1. 环境配置2. 拉取代码2.1克隆到gitee2.2 下载到本地2.3 切换分支2.4 重新导入3. 环境配置3.1 安装gradle-方法13.2 安装gradle-方法2(推荐)3.3 jdk安装aspectj3.4 idea安装AspectJ插件4. 项目配置4.1 修改build.gradle4.2 修改buildSrcuild.gradle4.3 修改gradlejvm参数可选5 配置和构建5.1 配置jdk5.2 配置gradle5.3 配置aspectj5.4 构建6 编译6.1 设置modules6.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.gradle8.2.2 spring配置文件8.3 配置tomcat8.4 启动tomcat测试1. 环境配置jdk版本1.8.0_301idea版本2021.2.2系统版本win10_64位2. 拉取代码2.1克隆到giteespring的github地址https://github.com/spring-projects/spring-frameworkgit: 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/version7.5.1formatbin解压后配合环境变量 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原来的配置distributionBaseGRADLE_USER_HOME distributionPathwrapper/dists distributionUrlhttps://services.gradle.org/distributions/gradle-7.5.1-bin.zip zipStoreBaseGRADLE_USER_HOME zipStorePathwrapper/dists将distributionUrl修改为distributionUrlfile:///G:/bin_repo/gradle/gradle-7.5.1-bin.zip然后找到右侧的gradle刷新按钮点击刷新同时idea的gradle配置成gradle-wrapper.properties3.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 文件version5.3.26-SNAPSHOT org.gradle.jvmargs-Xms2048m -Xmx2048m -XX:MaxPermSize2048m org.gradle.cachingtrue org.gradle.paralleltrue kotlin.stdlib.default.dependencyfalse5 配置和构建5.1 配置jdk打开file - Project Structure选择jdk8,然后点击右下角apply应用5.2 配置gradle打开File - settings按照下面的配置好自己的gradle(前面安装gradle方法2的操作)5.3 配置aspectjsettings - Build,Execution,Deplotment - Compile - Java CompilerUse compile选择Ajc下面的Project bytecode version 选择1.8Path to aspectjtools.jar就是前面安装插件时提到的lib目录文件aspectjtools.jar记得后面红框内的必须勾选Generate debug indo和Delegate to javac配置好后勾选apply应用5.4 构建点击刷新按钮 reload all gradle projects如果构建过程有超时异常重复上述操作就好了成功后6 编译6.1 设置modulesfile - Project Structure 找到modules设置前是结构是这样的选择项目spring-aop右击右击添加AspectJspring-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 nameBeforeExecutionExclusionFileFilter property namefileNamePattern value^.*\spring-web\.*$/ /module7 简单测试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.javapackage com.demo; import org.springframework.stereotype.Component; Component public class User { public void printName() { System.out.println(Spring Demo); } }MyConfig.javapackage com.demo; import org.springframework.context.annotation.ComponentScan; ComponentScan(value com.demo) public class MyConfig { }Test.javapackage 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 -- Modulegradle -- 勾选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.xmlweb.xml的内容?xml version1.0 encodingUTF-8?display-nameArchetype Created Web Application/display-name servlet servlet-namedispatcher/servlet-name servlet-classorg.springframework.web.servlet.DispatcherServlet/servlet-class init-param param-namecontextConfigLocation/param-name param-value/WEB-INF/spring.xml/param-value /init-param /servlet servlet-mapping servlet-namedispatcher/servlet-name url-pattern//url-pattern /servlet-mapping在WEB-INF目录下创建spring.xmlspring.xml的内容?xml version1.0 encodingUTF-8?mvc:annotation-driven /context:component-scan base-package“com.demo”/创建controller在java下创建包名 com.demo创建 TestController.javapackage com.demo;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;RestControllerpublic class TestController {RequestMapping(value “test”)public String test() {return “hello mvc”;}}完成的目录8.3 配置tomcat添加本地的tomcat选择部署的war包选择 Deployment -- Artifact选择我们的war这里随便哪个都行下面的那个支持debug时热部署修改下面的项目名称我修改成mvc8.4 启动tomcat测试启动成功测试访问浏览输入访问地址 http://localhost:8080/mvc/test 能正常出来我们返回的内容
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2412473.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!