www.9778.com 35

Visual Studio Code 10 月 Java 扩展更新

Java on Visual Studio Code
10 月更新发布,此更新为代码跳转、代码操作和重构、代码段以及
Java 13 支持带来一些新特性。调试器、Maven、CheckStyle 和 TestRunner
也有改进。具体如下:

微软官方在博客表示,Java on Visual Studio Code
已经更新,在这个更新中,提到几个新的重构特性、语义选择以及提供的一些其他改进。

www.9778.com 1

Code Navigation

Go to super implementation

此更新中,可以在悬停时单击“Go to Super
Implementation”链接来跳转到类实现和重写方法。

www.9778.com 2

www.9778.com 3

重构

VS Code(Visual Studio Code)已成为多语言开发人员的首选文本编辑器。 大量
Javascript、TypeScript、Go、Python 和其它语言的开发人员都在使用 VS Code
进行编码,这部分归功于 VS Code
扩展形成的庞大生态系统。这些扩展增强和丰富了 VS Code 的体验,使其成为类
IDE 的超级智能文本编辑器,同时它又极其快速和轻量级。

Code Actions

此更新在 VS Code for Java 中添加了几个新的代码操作。

Create non existing package

当你的包名与文件夹名不匹配时,你可以选择在代码中更改包名,或者在文件系统中移动文件夹(即使目标文件夹还不存在)。

www.9778.com 4

Add quick fix for non accessible references

www.9778.com 5

Automatically trigger auto-import on paste

VS Code 现在可以自动添加缺少的导入。新特性通过 VS Code 首选项中的
java.actionsOnPaste.OrganeImports 首选项启用。如果为
true(默认值),则在将 Java 代码粘贴到空文件中时触发“Organize imports”。

www.9778.com 6

在extract to variable/constant/method之后触发器的重命名

www.9778.com 7

Refactoring

Inline refactoring

它允许你对局部变量、方法和常量进行重构。

www.9778.com 8

Convert for-loop to for-each loop

www.9778.com 9

Convert anonymous class to nested class

此重构允许你将匿名类转换为内部类。

www.9778.com 10

在extract to
variable/constant/method重构之后,通常情况下,希望使用有意义的名称分配结果。使用此功能,将不再需要执行单独的重命名操作,所有操作都是在单个重构步骤中以流线型方式处理。

VS Code 支持 了 Java 开发,许多 Java
拥护者和演讲者都使用它上台演讲做现场演示。

Code Snippets

此更新中,VS Code Java
支持服务器端的代码段,这意味着它将以上下文感知的方式提供更多的代码段选项。

www.9778.com 11

将局部变量转换为字段

以下是 2019 年 Java 开发人员使用 VS Code
开发、运行、调试和部署其应用程序的终极指南。

Java 13 support

此更新支持 Java 13。对于使用带有预览功能的 Java 12
的开发人员,需要升级到 JDK 13 才能继续使用它们。

Extract to
field也是一个流行的重构。现在,在选择表达式时,可以使用extract to
field。

如果您尚未下载 VS
Code,那现在就下载并安装它吧。接下来本指南将假定您至少安装了 Java
8,尽管 VS Code 也支持 Java 11。您也可以完全跳过本指南,直接参考文档《
用 VS Code 开发 Java
应用》。但是,建议对照下面的指南走查一遍重点部分,这将有助于您更好地利用
VS Code 进行 Java 开发。

Debugger

鼠标悬停时显示运行/调试

www.9778.com 12

当选择变量声明时,它将将变量转换为字段(convert the variable to field)

为了使 VS Code 支持核心 Java,作为最低要求,您必须安装一组扩展。
让我们逐一深入研究这些扩展。

Maven Support

Maven 扩展现在支持搜索 Maven Central 以解决代码中的未知类型。

www.9778.com 13

Maven 扩展的其他改进包括:

  1. 在自动完成依赖时,通过 groupId 或 artifactId 启用 search artifact
  2. 在 Maven 资源管理器中添加内联操作按钮

支持语义选择

这个扩展包包含了下文将要详细介绍的五个扩展。借助它,你无需过多了解就可以开始使用
VS Code。

Checkstyle 

Checkstyle: Set the Checkstyle Configuration 命令现在将检测到潜在的
CheckStyle 配置文件并列出它们。现在还可以通过在输入框中直接写入 URL
来提供配置文件。

www.9778.com 14

此扩展还添加了新命令 Checkstyle: Set the Checkstyle Version,它支持:

  • 从 main repo 列出最新的 Checkstyle 版本
  • 列出所有下载版本
  • 列出所有支持的版本
  • 用检查符号标记当前使用的版本

Smart Selection是 VS Code 添加的新特性,它可以理解 Java
代码。这样,就可以扩展或缩小与代码中插入位置的语义信息相对应的选择范围。

要使 VS Code 支持
Java,这是唯一一个必须安装的扩展。其它扩展都是补充性的,您需要根据要开发的项目决定是否要安装它们。

其他改进

  • 添加 java.test.SaveAllBeforeLaunchTest
    设置,表示是否在启动测试之前自动保存文件
  • 添加 java.test.forceBuildBeforeLaunchTest
    设置,表示是否在启动测试之前自动构建工作区

(文/开源中国)    

若要扩展选择,在 Windows 上则使用 Shift+Alt+→,在 Mac 上则使用
Ctrl+Shift+Command+→

安装完这个扩展后,您就可以阅读和编辑 Java 源代码了。首先创建一个
Helloworld.java 文件,然后用 VS Code 打开 (或者在 VS Code
中创建该文件,然后把它保存在某个文件夹中)。

若要缩小所选内容,在 Windows 上则使用 Shift+Alt+←,在 Mac 上使用
Ctrl+Shift+Command+←

www.9778.com 15www.9778.com 16www.9778.com 17www.9778.com 18

其他增强

完成后,您可以打开终端(在 Mac OS 中,使用组合键 ⌘+`),然后输入命令
javac HelloWorld.java 进行编译。

Maven

www.9778.com 19VS
Code 里内嵌的终端

当不支持 source/target 时,Maven 项目使用最新的执行环境

编译后会产生一个 Helloworld.class 文件。最后,用 Java
命令运行这个类:java helloworld。

对于没有在本地安装 Maven 的用户,无法从原型中找到 MVN 来创建 Maven
项目。Maven 扩展在扩展中嵌入一个全局 maven 包装器,如果找不到 mvn
或项目级 mvnw,则作为fallback

Java 语言支持扩展通过使用 Eclipse 语言服务器协议(Eclipse Language
Server Protocol)支持 Java。了解有关 Eclipse LSP 的更多信息。

支持在 Maven 项目创建期间选择原型版本

Java
语言支持扩展添加了许多其它功能,可以帮助您快速浏览、编写、重构和阅读
Java 源代码,您不妨使用 VS Code 这个轻量级文本编辑器来替代其它 IDE。

刷新资源管理器时,配置 maven.pomfile.globPattern 更改

www.9778.com 20面包屑导航
— 大纲视图 (左下角

Gradle

查看概述页面可以获取这个扩展的特性以及重构快捷键的完整列表。

添加 gradle 首选项

掌握了在 VS Code 中编写和阅读 Java
代码的基础知识后,下一步自然就是运行和调试代码了。
这正是该扩展提供的功能。 这个扩展使用您计算机上的默认
JAVA_HOME,当然您也可以自定义它。

java.import.gradle.arguments:参数传递给 Gradle

www.9778.com 21

java.import.gradle.jvmArguments:JVM 参数传递给 Gradle

它具备常见的 Java IDE
调试特性的所有能力,并且支持更多的自定义,可以让您控制代码如何被执行以及调试器如何连接到
JVM。 它还支持远程 JVM。

java.import.gradle.home:GRADLE_HOME 设置

安装这个扩展后,您会在主方法上方看到两个超链接,如上图所示。若您单击运行,代码将被编译并执行。您还可以设置断点并点击调试。

Checkstyle

www.9778.com 22

支持通过 http URL 加载 CheckStyle 配置

对于远程调试,您需要添加新的配置。 切换到调试视图(在 Mac 上按 Shift +⌘+
D)并点击配置按钮⚙。 这样会打开 launch.json 文件。
单击屏幕上的添加配置蓝色按钮。 这会打开一个如上图所示的弹出菜单。

现在,您可以自定义一个能插入远程 JVM 的
启动项了。您只需提供主机名、端口号等详细信息。

和其它调试 IDE
一样,您可以在运行期间查看变量、堆栈追踪,甚至对变量内容进行更改。

www.9778.com 23

至此,我们完成了用于阅读、编写、运行和调试 Java 代码的 VS Code
基本设置。

掌握了 Java 编码的基础知识后,您很快就需要使用库、依赖项、类路径等。在
VS Code 上进一步改进 Java 支持的最佳方法是添加以下三个扩展:1.Java
依赖查看器(Java Dependency Viewer)2. 针对 Java 的 Maven 扩展 (Maven
for Java)3. 微软的 Java 测试运行器(Java Test Runner)

让我们分别看一下这几个扩展。

微软的 Java 依赖查看器这个扩展为您提供两个核心功能。
其中主要的一个功能是提供了“项目”的概念,您可以手动向项目中添加库。
第二个功能使项目当前设置的 classpath 可视化,即使是 Maven
项目(参见下文针对 Java 的 Maven 扩展)。

打开命令托盘(Shift +⌘+ P)并输入 create java:

www.9778.com 24

您需要选择创建项目的位置。项目由与项目名称同名的文件夹组成(您选择了创建项目的位置后,接下来命令托盘会继续询问项目名称,例如你可以输入
myworkspace)。

创建项目后,VS Code 将在新窗口中打开这个新文件夹。

www.9778.com 25

就像您看到的那样,这个项目具有一个基本结构,其中包含了 bin 和 src
文件夹。 在 src 中,开始会有一个基本的 Java 类。 如果您是一位经验丰富的
Java 开发人员,一眼就会发现这个扩展使用的是 Eclipse
项目的格式,这是因为它与 Eclipse
语言服务器协议和其它扩展能很好的协同工作。添加类库和 JAR
您可以编辑 .classpath 文件,指定全部自定义 JAR
包所在的目录,这个目录可以放在任何位置,例如某个 lib
文件夹。这些扩展会自动加载 classpath
中包含的类库,使你能够运行自己的代码。

www.9778.com 26

微软的针对 Java 的 Maven 扩展Maven 是 Java
生态系统中使用最广泛的项目构建和依赖关系管理工具。因此,通过该扩展,您几乎可以用
VS Code 处理任何类型的 Java 项目。

您将能够通过 Maven 原型(archetype)生成和引导 Maven
项目、管理依赖关系并触发 Maven 目标,并借助一些智能代码补全功能编辑 pom.
xml 文件。

www.9778.com 27

让我们来看一下:

  • 再次打开命令托盘,然后输入 Maven。
  • 选择 Generate from Maven Archetype。
  • 选择 maven-archetype-quickstart。

这个扩展会要求您选择目标文件夹,以便在其下面生成项目文件夹。
输入焦点会跳转到终端,您必须在那里输入 Maven
命令行的参数,不过不用担心,它会一步一步地引导您。

创建项目后,直接从终端调用 code <folder
name=””>即可打开它。</folder>

www.9778.com 28

好了,您现在应该已经在 VS Code 中打开您的 Maven
项目了。您可以做的最基本的事情就是运行您的代码。 您有两个选择:

  1. 如前所述,使用 App 类中 main 方法旁边的 Run 超链接运行您的代码。2.
    使用 Maven。

www.9778.com,如果您使用 Java 调试扩展触发器,扩展将使用 Maven 生成的
classpath,以确保所有依赖项都正确地添加到类路径中。

如果使用 Maven 运行 Java
代码,您可以像往常一样使用终端,或者打开命令托盘并输入 Maven Execute
Commands。

www.9778.com 29

它会要求您选择一个项目。 由于您只有一个项目,直接在其上按回车即可。
接下来,您将看到一个列表,它包含了所有默认的核心 Maven 目标。 选择
package 生成 JAR 文件。

www.9778.com 30

如果要运行自定义目标,例如从 Maven 插件继承的目标,您可以使用 Maven
视图:

www.9778.com 31

编辑 pom.xml 文件并添加依赖项后,VS Code 将自动重新加载
classpath,然后您就可以从新的依赖项中导入类和包。
这个过程非常干净、顺畅。

Microsoft 的 Java 测试执行器

最后一步是增强单元测试的运行、调试和测试结果的可视化。此扩展程序将超链接添加到可以单独执行的单元测试
(支持 JUnit 和 TestNG),您可以立即在 VS Code
中看到报告,如下面的示例所示。

www.9778.com 32

此扩展还将启用测试资源管理器视图,因此您可以专注于代码的单元测试,并以更加符合测试驱动开发的方式编写软件。

www.9778.com 33

此扩展目前仅适用于 Maven 项目,因此请确保您安装了针对 Java 的 Maven
扩展。

如果您现在对使用 VS Code 进行 Java
开发感到满意,那么是时候进一步改善您的使用体验了。
以下是一些扩展列表,可以改善您的日常工作体验。

这只是接下来要添加哪些扩展的建议,而不是事实标准的列表,但它可以让您先行一步。

GitLens

www.9778.com 34

希望您已经在使用 Git 了,无论是通过 GitHub
还是其它任何服务或环境。此扩展为您提供有关源代码著作信息的洞察,例如
“谁添加了此方法以及何时添加”。

上图就是安装了 GitLens 后 Java
类的样子。看看那些没有数字的行,它们是对提交历史的注释。
您也可以简单地将鼠标悬停在特定的行上,它将显示这一行是何时、由谁、在哪个提交哈希上添加的。

Rest 客户端

如果您是构建 REST API 的开发人员,那么这是您必须安装的 VS Code 的扩展。
有了它,您将能够编辑包含 HTTP 调用的 .http 文件。
编辑器将快速提供代码片段和模板,它会为您提供一个即点生效的神奇的超链接,它会触发
HTTP 调用并在旁边打开结果。下图是一个快速浏览。

www.9778.com 35

就这样了! 您现在拥有一份完整的 VS Code 设置,可以实际进行任何类型的
Java 开发了。

如果你是一个狂热的 Spring 开发人员,一定想知道 Pivotal
和微软提供的那些能增强 Spring Boot 应用开发体验的重要扩展。

最后,有一个可以帮助您编写 build.gradle 文件的 Gradle 扩展。

以下是一些额外的 Spring 工具供进一步学习:Spring Boot ToolsSpring
Initializr Java SupportSpring Boot DashboardGradle Language Support