提示
本文主要介绍如果使用 VSCode 开发 Java 程序。@ermo
本文演示使用的环境:
操作系统:Mac
JDK 版本:1.8.0_301
VSCode 版本:1.70.1 (Universal)
Maven 版本:3.8.1
# 在 VSCode 中使用 Java
VSCode(Visual Studio Code) (opens new window) 是一款由微软开发的免费代码编辑器,目前在前端开发中比较流行。
本文主要学习如何在 VSCode 中开发 Java 项目,包括常用的快捷键,创建并启动 SpringBoot 项目等。
# 下载
可以直接在 VSCode 官网 (opens new window) 下载对应系统的安装包。
国内在官网可能会出现下载慢的问题,可以考虑将下载域名替换为镜像域名。
# 官网下载地址
https://az764295.vo.msecnd.net/stable/e4503b30fc78200f846c62cf8091b76ff5547662/VSCode-darwin-universal.zip
# 国内镜像
https://vscode.cdn.azure.cn/stable/e4503b30fc78200f846c62cf8091b76ff5547662/VSCode-darwin-universal.zip
# 常用快捷键
键入 cmd + T
默认打开搜索框,带一个 #
键,输入下面的符号可以搜索更具体的内容:
@/
- 查询所有请求 url,请求方法@+
- 查询所有定义的 bean@>
- 查询所有的方法@
- 查询所有注解
下面列出一些其他常用快捷键:
cmd + shift + N
- 打开新的窗口cmd + shift + F
- 搜索替换cmd + shift + P
- 查询所有命令,调色板,万能命令cmd + shift + K
- 删除一行alt + shift + up/down
- 向上/向下复制一行alt + up/down
- 向上/向下移动一行shift + opt + F
- 格式化cmd + P
- 快速选中最近打开的文件opt + 鼠标左键
- 光标多处选中opt + cmd + up/down
- 光标多处选中,上下移动opt + shift + O
- 优化导入cmd + .
- 补全变量/快速 try catch/快速 throw
通过 cmd + P
,然后键入 #
,可以查询 jar 中类文件。
键入 cmd + shift + P
打开调色板,搜索 Open process explorer
,可以看到 VSCode 内存使用情况。
# 配置 maven settings.xml
打开 Code -> Preference -> Configuration,搜索 maven,找到 Maven Global Settings
和 Maven User Settings
,指定对应的 setting.xml
文件目录即可,默认使用的是当前用户目录下的 ~/.m2/settings.xml
。
# 配置 jdk 环境变量
键入 cmd + P
,搜索 settings.json
,在 settings.json
文件配置下面内容:
"java.configuration.runtimes": [
{
"name": "JavaSE-1.8",
"path": "/Library/Java/JavaVirtualMachines/jdk1.8.0_301.jdk/Contents/Home"
}
]
# 创建 SpringBoot 项目
安装 Java 相关的插件:
- Extension Pack for Java
- Spring Boot Extension Pack
安装完成后重启 VSCode,可以看到一个菜单栏多了一个 Create Java Project
按钮。
点击 Create Java Project
按钮,然后选择 Spring Boot
。
选择 Maven Project
。
选择 SpringBoot 版本,类似于下面的依赖,这里使用 2.7.2 版本进行测试。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.2</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
接下来选择项目语言,点击 Java
。
后面的操作都是通过回车一步一步选择,包括以下几步:
- 选择
groupId
,和artifactId
- 选择打包方式,这里使用 jar 形式。
- 选择 Java 版本,使用 java8
- 选择依赖,这里选择 Spring Web
- 选择要放置的文件目录,然后回车等待项目初始化
初始化完成后打开项目,会出现下面的界面。
可以使用 Java Project 菜单栏,项目的展现形式更像 IDEA。
# 启动 SpringBoot 项目
先使用最简单的方式启动项目,找到启动类,然后点击 Run 或者 Debug 进行启动。
新建一个类 HelloController
,添加一个简单的方法 say
。
当项目目录有多个 package 时,这时目录有2种展现形式 Flat View(扁平结构) 和 Hierarchical View(分层结构),读者可以根据自己的开发习惯进行展示。
重启项目,然后在浏览器访问 localhost:8080/say
,浏览器会成功展示 Hello VSCode
。
# 多环境配置
在实际开发项目中会遇到这种场景,项目中一般会有 application-test.yml
、application-dev.yml
和 application-prod.yml
三个配置文件。
开发过程中一般使用 application-dev.yml
文件中的配置,生产环境使用 application-prod.yml
,我们想要在本地开发调试的时候指定特定的 active
指令。
上文中直接找到应用启动类进行启动的方式无法解决这种应用场景,可以留意下启动日志:
No active profile set, falling back to 1 default profile: "default"
这时候就要使用到 VSCode 中的 Run and Debug
功能,可以在左侧菜单栏中找到小虫子一样的按钮。
点击 Run and Debug
,然后找到 create a launch.json file
,点击后系统会在项目根目录 .vscode
创建一个 launch.json
文件。
launch.json (opens new window) 是当前项目启动需要的一些配置项,支持多种语言。
自动生成的 launch.json
文件内容如下:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "java",
"name": "Launch Current File",
"request": "launch",
"mainClass": "${file}"
},
{
"type": "java",
"name": "Launch VscodeInJavaApplication",
"request": "launch",
"mainClass": "cc.ermo.vscodeinjava.VscodeInJavaApplication",
"projectName": "vscode-in-java"
}
]
}
configurations
是一个数组,可以配置多个启动配置,数组内的每个 json 对象最终会在 Run and Debug
作为启动列表展示。
当前项目只有一个应用启动类 VscodeInJavaApplication
,所以加上默认的启动配置,一共有2个数组元素。
简单说明下 json 内的常用属性:
type
- 启动类型类型,常用的类型有node
、java
、php
、python
等name
- 调试名称request
- 调试模式,主要有launch
和attach
,lanuch
用于启动当前应用,后者主要用于链接一个已经启动的应用,也就是远程 debugmainClass
- 主应用启动类,在 Java 中可以为启动类的全限定类名,也可以为内置变量,比如${file}
就是一个 内置变量 (opens new window),表示将当前打开的文件作为启动类projectName
- 项目名称
了解这些配置后,将项目 src/main/resources
目录下的 application.properties
文件后缀修改为 application.yml
然后在当前目录新增一个 application-test.yml
文件,内容如下:
server:
port: 8890
spring:
application:
name: vscode-in-java-test
然后对 HelloController
的内容进行修改:
@RestController
public class HelloController {
@Value("${spring.application.name}")
private String applicationName;
@GetMapping("/say")
public String say() {
return "Hello VSCode";
}
@GetMapping("/name")
public String currentApplicationName() {
return applicationName;
}
}
增加一个 /name
的接口,用于验证当前激活的 profiles.acitve
。
然后修改 launch.json
文件,添加 env
属性。
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "java",
"name": "Launch Current File",
"request": "launch",
"mainClass": "${file}"
},
{
"type": "java",
"name": "Launch VscodeInJavaApplication",
"request": "launch",
"mainClass": "cc.ermo.vscodeinjava.VscodeInJavaApplication",
"projectName": "vscode-in-java",
"env": {
"spring.profiles.active": "test"
}
}
]
}
也可以使用 args
属性进行配置。
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "java",
"name": "Launch Current File",
"request": "launch",
"mainClass": "${file}"
},
{
"type": "java",
"name": "Launch VscodeInJavaApplication",
"request": "launch",
"mainClass": "cc.ermo.vscodeinjava.VscodeInJavaApplication",
"projectName": "vscode-in-java",
"args": "--spring.profiles.active=test"
}
]
}
通过 Run and Debug
启动程序。
启动过程的日志可以看出当前激活的 profile
为 test
。
The following 1 profile is active: "test"
项目启动完成后访问 localhost:8890/name
可以看到浏览器返回 vscode-in-java-test
。
# 总结
VSCode 作为一款开源工具并且由微软维护,更新频率高,目前在前端非常流行。
用 VSCode 开发 Java 在效率和流畅度上和 IDEA 还有一定差距,但是使用 VSCode 可以摆脱破解版魔咒。
个人认为已经长期维护的大型项目建议使用 IDEA,保证开发效率。如果是刚成立的项目或者对 JDK 新特性进行学习,这种情况,不妨尝试下 VSCode。