java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > VSCode 配置 Spring Boot

VSCode 配置 Spring Boot 项目开发环境的全过程

作者:Milton

两三年前曾经试过配置Java环境, 存在不少问题作罢. 最近搜了下相关的文章, 感觉VSCode对Java项目的支持比三年前完善了不少. 今天实际配置了一下环境, 把自己常用的功能过了一遍, 基本能跑通开发流程, 做个笔记,需要的朋友可以参考下

神器IDEA在升级到2023之后越发卡顿, EDU邮箱也不能用了, 照现在这个JDK版本的升级速度, 神器不升级也不行, 需要开始物色替代品. 其它IDE我用得少, VSCode还是比较熟悉的, 可以作为备选项.

两三年前曾经试过配置Java环境, 存在不少问题作罢. 最近搜了下相关的文章, 感觉VSCode对Java项目的支持比三年前完善了不少. 今天实际配置了一下环境, 把自己常用的功能过了一遍, 基本能跑通开发流程, 做个笔记.

安装扩展

需要安装的扩展有两组

创建空白 Spring Boot 项目

快捷键 Shift+Ctrl+P呼出命令菜单, 使用 Spring Initializr: Create a Maven Project, 按提示创建

Java环境设置

需要先配置JDK, 否则在编译和运行项目时无法找到 pom.xml 中设置的JDK版本.

打开 settings

对应 User 的 settings.json, 这里的 name 是系统给定的值

"java.configuration.runtimes": [
        {
            "name":"JavaSE-11",
            "path": "/opt/jdk/jdk-11.0.18/"
        },
        {
            "name":"JavaSE-17",
            "path": "/opt/jdk/jdk-17.0.7/"
        },
        {
            "name":"JavaSE-21",
            "path": "/opt/jdk/jdk-21.0.2/"
        },
    ],

对应 Workspace 的 settings.json, Workspace 不需要配置 JDK, 用全局的即可

 "java.configuration.detectJdksAtStart": false,

设置完之后需要重启 VSCode 才生效.

使用 Maven

使用自定义版本的 Maven

VSCode 中默认使用的是当前项目目录下的 Maven Wrapper, 如果想换成其它版本, 或者不希望在项目目录下增加额外文件, 则需要自行指定 mvn 路径

在 User 的 settings.json 中增加下面的条目, 注意 这个条目在当前的VSCode版本, 只能加到 User, 不能加到 Workspace.

"maven.executable.path": "/opt/maven/apache-maven-3.8.6/bin/mvn",

使用自定义 settings.xml

首先配置项java.configuration.maven.userSettings在maven扩展中不起作用, 在GitHub issue #140中有解释

For now, this maven extension works independently with the language server, so it never reads any java.* config.
Use extra parameters to specify your own settings file.
In this extension we provide config entry maven.executable.options as a workaround. E.g.
"maven.executable.options": "-s c:\settings.xml"
Make sure the filepath format is compatible with the terminal you use, here we won't format the content for your terminal.

所以需要通过在Workspace的 settings.json 中添加下面的配置, 使得自定义 settings.xml 起作用, 路径要使用绝对路径

"maven.executable.options": "-s /path-to/settings.xml"

加入此项后, 在界面上展开项目的 Profiles 就能看到自定义settings.xml中包含的profile.

查看项目全部依赖

在界面左侧导航条, MAVEN模块, 项目上右键 -> Show Dependencies, 会以文本形式展示所有依赖

设置执行 Maven 使用的 JDK

执行 Maven 使用的JDK和项目pom.xml指定的JDK并无关联, 是通过项目中的 mvnw 脚本检查环境 $JAVA_HOME 变量获得. 如果不设置执行maven命令会使用系统自带的java, 这样会有问题.

这个环境变量可以通过两种方式设置

  "maven.terminal.customEnv": [
        {
            "environmentVariable": "JAVA_HOME",
            "value": "/opt/jdk/jdk-21.0.2"
        }
    ],
"maven.terminal.useJavaHome": true,

执行maven命令

可以通过界面左侧导航条, MAVEN模块,

如果要快捷执行

Favorites 也可以在当前项目的 settings.json 中添加

"maven.terminal.favorites": [
        {
            "command": "clean package -DskipTests"
        }
    ],

Run和Debug

界面方式可以直接通过 SpringBootApplication 类的编辑器右上方, 点击Run或Debug按钮

对于日常快捷操作, 可以通过Shift+Ctrl+P呼出命令菜单, 用 Spring Boot Dashboard: Run, Spring Boot Dashboard: Debug, Spring Boot Dashboard: Stop 这三个命令进行操作.

Debug 也可以用 VSCode 默认的F5直接呼起

Run和Debug时资源文件filtering问题

VSCode 只要检测到文件改动, 就会自动build, 但是此时会忽略指定的 profile, 导致资源文件的 filtering 未执行, @标注的占位符没有替换为正确配置, 从而在执行Spring Boot Dashboard: RunSpring Boot Dashboard: Debug时, 启动出错. 要手动先调 Maven: Favorite编译再执行Run才能正确运行.

解决方案:

在 task.json 中创建一个task, 用于带 profile 编译, 注意这里要指定JAVA_HOME, 指定 settings.xml, 指定 profile

{
    "label": "compile[dev]",
    "type": "shell",
    "command": "JAVA_HOME=/opt/jdk/jdk-21.0.2/ /opt/maven/apache-maven-3.8.6/bin/mvn compile -Pdev -DskipTests -f ./pom.xml -s ./settings.xml"
},

在 launch.json 中将上面的 task 设置到 preLaunchTask

{
    "type": "java",
    //...
    "args": "",
    "preLaunchTask": "compile[dev]",       <--- 增加这行
    "envFile": "${workspaceFolder}/.env",
},

之后启动 Spring Boot Dashboard: Run时就会先执行这个编译对资源文件filtering, 再启动应用就正常了.

示例

最终的 User settings.json 新增项为

  "java.configuration.runtimes": [
        {
            "name":"JavaSE-11",
            "path": "/opt/jdk/jdk-11.0.18/"
        },
        {
            "name":"JavaSE-17",
            "path": "/opt/jdk/jdk-17.0.7/"
        },
        {
            "name":"JavaSE-21",
            "path": "/opt/jdk/jdk-21.0.2/"
        },
    ],
    "maven.executable.path": "/opt/maven/apache-maven-3.8.6/bin/mvn",

最终的 Workspace settings.json 为

{
    "java.configuration.detectJdksAtStart": false,
    "maven.terminal.customEnv": [
        {
            "environmentVariable": "JAVA_HOME",
            "value": "/opt/jdk/jdk-21.0.2"
        }
    ],
    "maven.terminal.favorites": [
        {"command": "clean package -Pdev -DskipTests"},
    ],
    "maven.executable.options": "-s /path-to/settings.xml",
}

最后

从实际使用看, VSCode对于中小型Java项目已经可以作为生产力工具使用, 配置稍微有点麻烦, 从开发到debug到打包, 流程都没什么问题. 代码高亮和提示也没什么问题, 本身VSCode也有一些优势, 例如对HTML, js代码的高亮, IDEA社区版是没有的. 存在的问题就是有些改动到界面上的体现反应有点慢, 而且有些设置和改动变动比较大, 需要重启后才能正确高亮.

到此这篇关于VSCode 配置 Spring Boot 项目开发环境的文章就介绍到这了,更多相关VSCode 配置 Spring Boot内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文