罗奇奇 | OSC开源社区(ID:oschina2013)
IntelliJ IDEA 2022.1 正式发布了,熟悉我的朋友都知道,我通常都会第一时间更新到最新版本的。不过,这次我不太想追新版了,有点累,不想折腾了。我目前用的 2021.x 版本已经完全可以满足我的个人开发需求的。除非 2022 有更加里程碑式的新版本,我才会考虑更新一波。
IntelliJ IDEA 2022.1 的重要更新是:引入了 Dependency Analyzer 以促进依赖关系管理和冲突解决,一个更新的 New Project 向导来优化新项目的启动过程,以及 Notifications 通知工具窗口,它提供了一种新的、简化的方式来接收来自 IDE 的通知。2022.1 版本还包括许多其他值得注意的改进,下面摘录部分新功能作介绍。
关键更新
- 依赖分析器 (Dependency Analyzer)
为了促进依赖管理和冲突解决,IntelliJ IDEA 实现了依赖分析器,它提供项目和子项目中使用的所有依赖项(包括传递性依赖项)的广泛信息。
这个新功能允许轻松检测冲突的依赖关系并解决问题,比如可以过滤掉相同的依赖项,并查看它们在不同库中的存在,还可以快速浏览依赖项,以正确构建配置。
- 增强的 新项目 向导
重新设计了新项目 向导界面,以简化创建新项目的过程。可以快速启动一个空项目;使用 Java、Kotlin、Groovy 和 JavaScript 的预配置选项;或者有更复杂的项目,请使用生成器。
- 新的通知 工具窗口
事件日志实例已替换为新的 通知 工具窗口,更清楚地突出重要和有用的建议和通知,并将它们组织在专用工具窗口中。
有关更多详细信息,请参阅博客文章:https://blog.jetbrains.com/idea/2022/01/intellij-idea-2022-1-eap-1/#New_Notifications_tool_window
用户体验
- 新建项目向导中的 Maven Archetype 优化
作为新建项目向导的 UI 改造的一部分,IntelliJ IDEA 重新设计了 Maven Archetype 项目生成器,2022.1 版本在浏览原型时引入了“键入时搜索”功能,以及在模块创建期间管理原型目录的能力。
此外,还可以按原型输入所需的属性:
- 均匀拆分选项卡
IntelliJ IDEA 2022.1 可以在编辑器选项卡之间平均分配工作空间,使它们具有相同的宽度。
- 将 UML 图导出为其他格式
现在可以将 UML 图导出为 yEd .graphml、JGraph .drawio、Graphviz .dot、带位置的 Graphviz .dot、Mermaid .md、Plantuml 和 IntelliJ IDEA .uml 文件,使得它们与第三方工具兼容。
- 更新了 结构搜索和替换 对话框
重新设计了结构搜索和替换对话框,提供所有模板的列表,以便更轻松地在它们之间导航。
安全
- 包检查器插件
ntelliJ IDEA 2022.1 现在可以通过检查 Checkmarx SCA 数据库和国家漏洞数据库,来检测项目中使用的 Maven 和 Gradle 依赖项中的漏洞。
Java 支持
- 支持 Java 18
IntelliJ IDEA 2022.1 支持 2022 年 3 月发布的 Java 18 的新功能。IDE 现在支持代码片段、开关表达式的模式匹配更改等功能。
有关详细信息,请参阅此博客文章:https://blog.jetbrains.com/idea/2022/03/java-18-features-support/?_gl=1*6wf1f9*_ga*MjA4MTU3MzE1OC4xNjM0ODU3MzQ1*_ga_V0XZL7QHEB*MTY0OTgwNTQ3NS40LjEuMTY0OTgwNjMwMy4yMw..&_ga=2.58852333.1145425053.1649805475-2081573158.1634857345
- Java反编译器
Java 反编译器现在与 Java 17 版本更兼容。它支持现代语言构造函数,例如密封类型和模式匹配,具有更好的字符串反编译切换功能,提供类型注释并检测公共常量。
- 更好的 JUnit 5 支持
添加了对 JUnit 5.7 中引入的新功能的支持,包括对@EnabledIf/DisabledIf
、@NullSource/EmptySource
和@TempDir
注释的支持。
使用 try/catch 模板更新 Surround
更新后的带有 try/catch模板的 Surround 现在重新抛出包装到 RuntimeException 中的异常,而不是吞下它。
Kotlin 支持
IntelliJ IDEA 2022.1 支持 Kotlin 1.6.20,因此最新的 Kotlin 语言功能,例如支持并行编译、上下文接收器原型以及跨所有 Kotlin 目标的更好的代码共享,现在都可以在 IDE 中使用。
在此博客文章中了解有关新 Kotlin 更新的更多 信息:https://blog.jetbrains.com/kotlin/2022/04/kotlin-1-6-20-released/
- 改进了 Kotlin 的 IDE 性能
优化了包索引,大大提高了 IDE 在执行代码完成、突出显示和与参考搜索等相关操作时的速度,在代码更改后发生的重新索引案例的数量和范围也有所减少。
框架和技术
Go 微服务支持
- 添加了对 Go 微服务的支持,提供 URL 路径引用、端点、Search Everywhere 和装订线图标等功能。使用这些功能需要在 IntelliJ IDEA Ultimate 中安装 Go 插件,目前仅适用于标准库函数。
- IntelliJ IDEA Ultimate 现在为 Go 文件中的 HTTP 方法和标头提供补全,每个端点旁边都会出现一个地球图标,如果单击它,IntelliJ IDEA Ultimate 将建议几个选项。
Spring Data Mongo 的代码洞察改进
引入了许多更新来改善使用 Spring Data MongoDB 的用户体验。IntelliJ IDEA 现在突出显示 JSON 查询,完成运算符和文档字段,并提供从映射实体到 数据库 工具窗口的导航。
更好地支持 .proto 文件
为 .proto 文件引入了一个新的意图操作:为未解析的消息引用添加了缺失的导入语句,添加缺少的导入语句后, IDE 将提供消息引用的补全建议。
gRPC 反射支持
- 当项目中存在描述 gRPC 服务的 .proto 文件时,IntelliJ IDEA Ultimate 现在为服务名称、方法名称和请求正文选项提供代码补全。更重要的是,现在可以通过装订线图标运行请求。
- 如果项目没有 .proto 文件,但服务器支持 gRPC 反射,你将能够运行请求,并完成服务器运行实例的服务和方法名称。
Kubernetes 支持
Kubernetes
编辑集群上的资源
现在可以从编辑器选项卡中修改从集群加载的资源。
kubectl 的自定义路径
如果 kubectl 不在标准位置,现在可以手动配置路径。
转发端口
该版本为 pod 添加了端口转发功能。要转发端口,可以使用工具栏上的图标或选择上下文菜单项。
服务视图中的 描述资源操作
“服务”视图中的所有资源都有一个新的“描述资源”操作,可以从上下文菜单中调用它或使用工具栏按钮。
支持集群中的事件
集群事件现在显示在 服务 视图的单独节点中,提供有关系统中最近事件的数据。
要查看特定 pod 的事件,请在其上面调用 Describe Resource 并在操作结果中 查找 Events 部分
支持
为 werf.yaml 和相关 Helm 模板文件 ( https://werf.io ) 引入了有限的编辑器支持,包括代码补全功能、检查和快速修复建议、重构/重命名 . Values.werf.image.*,以及一些字段的验证,如 boolean 和 int。
对 Helm 的导入子值支持
支持通过 import-values 设置导入子值,这些设置影响模板中内置对象的完成/导航。尚未提供对 import-values 字段的增强编辑器支持。
请注意,Kubernetes 功能仅适用于 IntelliJ IDEA Ultimate,并且需要安装插件。
构建工具
- 更新 Gradle 的进度条
为 Gradle 进程实现了一个确定的进度条,例如下载依赖项和导入工件,允许跟踪文件发生的情况并估计该过程何时完成。
此版本还包含大量更新项,详情可在更新公告中细阅:https://www.jetbrains.com/idea/whatsnew/#web-development