VSCode 配置 Spring Boot 项目开发环境

06-01 1327阅读

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

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

安装扩展

需要安装的扩展有两组

  • Extension Pack for Java
  • Spring Boot Extension Pack

    创建空白 Spring Boot 项目

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

    Java环境设置

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

    打开 settings

    • 首先在 Workspace 关闭 Java> Configuration: Detect Jdks At Start
    • 然后在 User 的 Java> Configuration: Runtimes 中添加 JDK

      对应 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.

      VSCode 配置 Spring Boot 项目开发环境
      (图片来源网络,侵删)

      “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.

      VSCode 配置 Spring Boot 项目开发环境
      (图片来源网络,侵删)

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

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

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

      VSCode 配置 Spring Boot 项目开发环境
      (图片来源网络,侵删)

      查看项目全部依赖

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

      设置执行 Maven 使用的 JDK

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

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

      1. workspace settings 中添加如下设置, 建议仅用于 Workspace, 因为不同项目的 JDK 可能不同, 这个设置仅对在terminal 中执行的 maven 命令有效
          "maven.terminal.customEnv": [
              {
                  "environmentVariable": "JAVA_HOME",
                  "value": "/opt/jdk/jdk-21.0.2"
              }
          ],
      
      1. workspace settings 中勾选 Maven > Terminal: Use Java Home, 对应的设置如下, 开启后会自动使用 java.home 的值作为 $JAVA_HOME
      "maven.terminal.useJavaHome": true,
      

      执行maven命令

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

      • 项目上右键 Run Maven Commands 执行. 如果要执行复合命令(如 clean package), 可以点选 Custom
      • 也可以通过下级菜单 Lifecycle 展开后点击对应 Command 执行.

        如果要快捷执行

        • 可以用快捷键 Shift+Ctrl+P呼出命令菜单, 用 Maven 过滤, 选择 Maven: History
        • 界面左侧导航条, MAVEN模块, 下级菜单 Favorites, 添加自己常用的复合命令, 例如clean package -DskipTests

          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: Run, Spring 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]",       
                      "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",
          
              "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",
          }
          
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码