需要把远程仓库(例如:开源项目的)的代码拉到本地IDEA,实现版本控制和切换分支的功能,通过以下方式实现:
1、IDEA/File/Setting/Version Control/Gitee/+/Log In to Gitee 输入码云账号和密码
2、完成添加账号后,点击IDEA/File/New/Project from Version Control用Git将项目克隆到本地仓库中,并用IDEA打开。
3、对拉取的代码做分支管理
总结:之所以做多分支与分支切换,是因为要做容灾备份和代码内容定制化。
- 有时团队开发时,代码只在一条分支上开发,可能出现改错了代码提交并推送到本地和远程仓库了,回退不了代码,需要耗费大量人力物力做代码重新修复。
- 以若依开源项目为例,不同的分支下,jdk和spring boot的版本就不同,因此就要做分支切换来获取不同的配置条件下的代码。
Idea版本和适配的JDK版本、Language Level是有如下对应关系的,所以当引入的开源项目所用的jdk版本不同时,要根据版本选择不同的idea及其自动下载的jdk,否则就会陷入无穷尽的报错:
①idea<==>jdk对应关系表
| IDEA版本 | Java 支持版本 |
| :----: | :----: |
| 2023+ | 可支持JDK21 |
| 2022.3 | Java 7(1.7.0)~19 |
| 2022.2 | Java 6(1.6.0)~19 |
| 2022.1 | Java 6(1.6.0)~18 |
| 2021.3 | Java 6(1.6.0)~17 |
| 2021.2 | Java 6(1.6.0)~17 |
| 2021.1 | Java 6(1.6.0)~16 |
| 2020.3 | Java 6(1.6.0)~15 |
| 2020.2 | Java 6(1.6.0)~15 |
| 2020.1 | Java 6(1.6.0)~14 |
| 2019.3 | Java 6(1.6.0)~13 |
| 2019.2 | Java 6(1.6.0)~13 |
| 2019.1 | Java 6(1.6.0)~12 |
②经典报错:
(1)当切换分支用jdk21,mvn compile和运行项目报错:
-source 8 中不支持 instanceof 中的模式匹配
(java: -source 8 中不支持 instanceof 中的模式匹配 (请使用 -source 16 或更高版本以启用 instanceof 中的模式匹配)
说明项目中运行的jdk环境是8,远低于jdk21,需要在Project Structure中修改:
然而会发现怎么修改都还是报错,要么报错说找不到这个模式匹配,要么就报错:
(2)build项目时报错java: No enum constant javax.lang.model.element.Modifier.SEAL
这都是在说明当前idea使用的jdk版本不是jdk21,尽管看到SDK中有 21版本的,但是Language Level(编译项目代码使用的jdk版本)的选项卡,最高只有到17和测试版X,很明显,就是上面版本对应表中指出的情况:
当前idea是2021.3的,所能支持的sdk最高版本只能到17,所以才出现无论怎么设置,都还是只能用17,显示时只会提示Java源用的是8的矛盾现象。
(3)然而,即使后面都改回了jdk8,没有报(1)(2)的错误,但是还是会报“运行的maven指令太长”的问题——Error running YudaoServerApplication. Command line is too long. Shorten command line for YudaoServerApplication or also for Spring Boot default configuration.
解决方案就是:
在运行SpringBootApplication时,Edit修改使用Jar版的Shorten,也许打开后是很简洁的界面,就需要点击设置选中“允许显示更多的选项卡对象”:
此时可能没有任何变化,需要重新启动项目,然后才能看到多出了Java部分的Shorten command line,
选择Jar版本:
之后就可以运行项目了: