環境:
windows 7
oracle jdk 1.8
intellij idea 2019.3.1
spring-framework 5.1.22.RELEASE
步驟:
1: 下載解壓spring zip 包(githup或者gitee下載)
2: 修改spring-framework源碼配置信息
打開項目子目錄 >>> ./gradle

修改docs.gradle文件 >>> dokka方法以及asciidoctor方法注釋


注:
task schemaZip(type: Zip) 在某些版本該任務中是沒有兼容window的路徑符號,需要手動修改一下

修改如下 >>>>>>>
task schemaZip(type: Zip) { group = "Distribution" baseName = "spring-framework" classifier = "schema" description = "Builds -${classifier} archive containing all " + "XSDs for deployment at https://springframework.org/schema." duplicatesStrategy 'exclude' moduleProjects.each { subproject -> def Properties schemas = new Properties(); subproject.sourceSets.main.resources.find { (it.path.endsWith("META-INF/spring.schemas") || it.path.endsWith("META-INF\\spring.schemas")) }?.withInputStream { schemas.load(it) } for (def key : schemas.keySet()) { def shortName = key.replaceAll(/http.*schema.(.*).spring-.*/, '$1') assert shortName != key File xsdFile = subproject.sourceSets.main.resources.find { (it.path.endsWith(schemas.get(key)) || it.path.endsWith(schemas.get(key).replaceAll('\\/','\\\\'))) } assert xsdFile != null into (shortName) { from xsdFile.path } } } }
先留一個坑 。。。。
3.導入項目 >>> 選中build.gradle右鍵import
漫長的等待中 。。。。
一般情況下導入是可以成功的,但 。。
exception during working with external system: java.lang.AssertionError at org.jetbrains.plugins.gradle.service.project.BaseGradleProjectResolverExtension.createModule(BaseGradleProjectResolverExtension.java:154) at org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension.createModule(AbstractProjectResolverExtension.java:86) at org.jetbrains.kotlin.idea.configuration.KotlinMPPGradleProjectResolver.createModule(KotlinMPPGradleProjectResolver.kt:67) at org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension.createModule(AbstractProjectResolverExtension.java:86) at org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension.createModule(AbstractProjectResolverExtension.java:86) at org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension.createModule(AbstractProjectResolverExtension.java:86) at org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension.createModule(AbstractProjectResolverExtension.java:86) at com.android.tools.idea.gradle.project.sync.idea.AndroidGradleProjectResolver.createModule(AndroidGradleProjectResolver.java:165) at org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension.createModule(AbstractProjectResolverExtension.java:86) at org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension.createModule(AbstractProjectResolverExtension.java:86) at org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension.createModule(AbstractProjectResolverExtension.java:86) at org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension.createModule(AbstractProjectResolverExtension.java:86) at org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension.createModule(AbstractProjectResolverExtension.java:86) at org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension.createModule(AbstractProjectResolverExtension.java:86) at org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension.createModule(AbstractProjectResolverExtension.java:86) at org.jetbrains.kotlin.android.configure.KotlinAndroidMPPGradleProjectResolver.createModule(KotlinAndroidMPPGradleProjectResolver.kt:45) at org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension.createModule(AbstractProjectResolverExtension.java:86) at org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension.createModule(AbstractProjectResolverExtension.java:86) at org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension.createModule(AbstractProjectResolverExtension.java:86) at org.jetbrains.plugins.gradle.service.project.TracedProjectResolverExtension.createModule(TracedProjectResolverExtension.java:45) at org.jetbrains.plugins.gradle.service.project.GradleProjectResolver.doResolveProjectInfo(GradleProjectResolver.java:344)
... ...
這個是因為spring配置的gradle版本問題

打開./gradle/wrapper/gradle-wrapper.properties文件
修改為5.x版本,博主修改為gradle-5.5.1-all.zip //all包含源碼
distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-5.5.1-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists
成功導入展示:

4. 編譯源代碼
這里先看一下spring的markdown文檔

大致意思是需要先預編譯`spring-core`、`spring-oxm`以及`spring-aspects`。
先直接編譯`spring-oxm`它依賴了`spring-core`
gradle窗口中選擇spring-oxm > Tasks > other > compileTestJava
然后是`spring-aspects` >>>
先打開 Project Structure窗口:

可以發現只有Kotlin的,還沒有AspecJ;這時我們需要加上

加上這兩個AspecJ即可。
spring-aspects > Tasks > other > compileTestJava
如果失敗請先安裝ajc編譯器 https://www.eclipse.org/aspectj/downloads.php

點擊Test

再生成即可
最后再多嘴啰嗦一句

這里默認是沒有勾上的,如果你自己勾上了。。。
那么spring-aspectjs配置步驟就不生效了,因為之前配置沒有寫入 .iml文件中。
去掉勾選並刪除 .idea文件下的modules文件夾試試吧
還有就是build.gradle 腳本是可以查看源碼和語法提示的

只需要在修改gradle-wrapper.properties步驟中改好后,執行一下gradlew.bat文件就好了。
----------------------------------------------------------------------------------
目前遇到問題就這幾點,希望能幫助到大家。
