VSCode?配置?Spring?Boot?項目開發(fā)環(huán)境的全過程
神器IDEA在升級到2023之后越發(fā)卡頓, EDU郵箱也不能用了, 照現(xiàn)在這個JDK版本的升級速度, 神器不升級也不行, 需要開始物色替代品. 其它IDE我用得少, VSCode還是比較熟悉的, 可以作為備選項.
兩三年前曾經(jīng)試過配置Java環(huán)境, 存在不少問題作罷. 最近搜了下相關(guān)的文章, 感覺VSCode對Java項目的支持比三年前完善了不少. 今天實際配置了一下環(huán)境, 把自己常用的功能過了一遍, 基本能跑通開發(fā)流程, 做個筆記.
安裝擴(kuò)展
需要安裝的擴(kuò)展有兩組
- Extension Pack for Java
- Spring Boot Extension Pack
創(chuàng)建空白 Spring Boot 項目
快捷鍵 Shift
+Ctrl
+P
呼出命令菜單, 使用 Spring Initializr: Create a Maven Project, 按提示創(chuàng)建
Java環(huán)境設(shè)置
需要先配置JDK, 否則在編譯和運行項目時無法找到 pom.xml 中設(shè)置的JDK版本.
打開 settings
- 首先在 Workspace 關(guān)閉 Java> Configuration: Detect Jdks At Start
- 然后在 User 的 Java> Configuration: Runtimes 中添加 JDK
對應(yīng) User 的 settings.json, 這里的 name
是系統(tǒng)給定的值
"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/" }, ],
對應(yīng) Workspace 的 settings.json, Workspace 不需要配置 JDK, 用全局的即可
"java.configuration.detectJdksAtStart": false,
設(shè)置完之后需要重啟 VSCode 才生效.
使用 Maven
使用自定義版本的 Maven
VSCode 中默認(rèn)使用的是當(dāng)前項目目錄下的 Maven Wrapper, 如果想換成其它版本, 或者不希望在項目目錄下增加額外文件, 則需要自行指定 mvn 路徑
在 User 的 settings.json 中增加下面的條目, 注意 這個條目在當(dāng)前的VSCode版本, 只能加到 User, 不能加到 Workspace.
"maven.executable.path": "/opt/maven/apache-maven-3.8.6/bin/mvn",
使用自定義 settings.xml
首先配置項java.configuration.maven.userSettings
在maven擴(kuò)展中不起作用, 在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.
查看項目全部依賴
在界面左側(cè)導(dǎo)航條, MAVEN模塊, 項目上右鍵 -> Show Dependencies, 會以文本形式展示所有依賴
設(shè)置執(zhí)行 Maven 使用的 JDK
執(zhí)行 Maven 使用的JDK和項目pom.xml指定的JDK并無關(guān)聯(lián), 是通過項目中的 mvnw 腳本檢查環(huán)境 $JAVA_HOME 變量獲得. 如果不設(shè)置執(zhí)行maven命令會使用系統(tǒng)自帶的java, 這樣會有問題.
這個環(huán)境變量可以通過兩種方式設(shè)置
- workspace settings 中添加如下設(shè)置, 建議僅用于 Workspace, 因為不同項目的 JDK 可能不同, 這個設(shè)置僅對在terminal 中執(zhí)行的 maven 命令有效
"maven.terminal.customEnv": [ { "environmentVariable": "JAVA_HOME", "value": "/opt/jdk/jdk-21.0.2" } ],
- workspace settings 中勾選 Maven > Terminal: Use Java Home, 對應(yīng)的設(shè)置如下, 開啟后會自動使用 java.home 的值作為 $JAVA_HOME
"maven.terminal.useJavaHome": true,
執(zhí)行maven命令
可以通過界面左側(cè)導(dǎo)航條, MAVEN模塊,
- 項目上右鍵 Run Maven Commands 執(zhí)行. 如果要執(zhí)行復(fù)合命令(如 clean package), 可以點選 Custom
- 也可以通過下級菜單 Lifecycle 展開后點擊對應(yīng) Command 執(zhí)行.
如果要快捷執(zhí)行
- 可以用快捷鍵
Shift
+Ctrl
+P
呼出命令菜單, 用 Maven 過濾, 選擇 Maven: History - 界面左側(cè)導(dǎo)航條, MAVEN模塊, 下級菜單 Favorites, 添加自己常用的復(fù)合命令, 例如
clean package -DskipTests
Favorites 也可以在當(dāng)前項目的 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 這三個命令進(jìn)行操作.
Debug 也可以用 VSCode 默認(rèn)的F5
直接呼起
Run和Debug時資源文件filtering問題
VSCode 只要檢測到文件改動, 就會自動build, 但是此時會忽略指定的 profile, 導(dǎo)致資源文件的 filtering 未執(zhí)行, @
標(biāo)注的占位符沒有替換為正確配置, 從而在執(zhí)行Spring Boot Dashboard: Run
, Spring Boot Dashboard: Debug
時, 啟動出錯. 要手動先調(diào) Maven: Favorite
編譯再執(zhí)行Run
才能正確運行.
解決方案:
在 task.json 中創(chuàng)建一個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 設(shè)置到 preLaunchTask
中
{ "type": "java", //... "args": "", "preLaunchTask": "compile[dev]", <--- 增加這行 "envFile": "${workspaceFolder}/.env", },
之后啟動 Spring Boot Dashboard: Run
時就會先執(zhí)行這個編譯對資源文件filtering, 再啟動應(yīng)用就正常了.
示例
最終的 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項目已經(jīng)可以作為生產(chǎn)力工具使用, 配置稍微有點麻煩, 從開發(fā)到debug到打包, 流程都沒什么問題. 代碼高亮和提示也沒什么問題, 本身VSCode也有一些優(yōu)勢, 例如對HTML, js代碼的高亮, IDEA社區(qū)版是沒有的. 存在的問題就是有些改動到界面上的體現(xiàn)反應(yīng)有點慢, 而且有些設(shè)置和改動變動比較大, 需要重啟后才能正確高亮.
到此這篇關(guān)于VSCode 配置 Spring Boot 項目開發(fā)環(huán)境的文章就介紹到這了,更多相關(guān)VSCode 配置 Spring Boot內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java程序部署到服務(wù)器上,接口請求下載文件失敗/文件為空/文件名不對的問題
這篇文章主要介紹了Java程序部署到服務(wù)器上,接口請求下載文件失敗/文件為空/文件名不對,本文給大家分享錯誤原因及解決方法,需要的朋友可以參考下2020-07-07IDEA配置Tomcat創(chuàng)建web項目的詳細(xì)步驟
Tomcat是一個Java?Web應(yīng)用服務(wù)器,實現(xiàn)了多個Java?EE規(guī)范(JSP、Java?Servlet等),這篇文章主要給大家介紹了關(guān)于IDEA配置Tomcat創(chuàng)建web項目的詳細(xì)步驟,需要的朋友可以參考下2023-12-12springboot2.3.1替換為其他的嵌入式servlet容器的詳細(xì)方法
這篇文章主要介紹了springboot2.3.1替換為其他的嵌入式servlet容器的方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07重學(xué)SpringBoot3之如何發(fā)送Email郵件功能
這篇文章主要給大家介紹了重學(xué)SpringBoot3之如何發(fā)送Email郵件功能的相關(guān)資料,文中包括環(huán)境準(zhǔn)備、項目配置、代碼實現(xiàn)、最佳實踐和安全性建議,通過采用異步發(fā)送、重試機制、限流等最佳實踐,可以構(gòu)建一個健壯的郵件發(fā)送系統(tǒng),需要的朋友可以參考下2024-11-11一小時迅速入門Mybatis之Prepared Statement與符號的使用
這篇文章主要介紹了一小時迅速入門Mybatis之Prepared Statement與符號的使用,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-09-09