VSCode中的tomcat插件有2種調試方式,一種是直接調試war包,另一種是把項目中的某個目錄作爲docBase.
第一種方式,對於開發人員調試的時候修改JSP,JS,效率比較低,要通過:打包->重啓tomcat的方式進行更新.
第二種方式,tomcat插件是直接把項目中的目錄名作爲ContextPath,這很可能不符合開發要求(比如是maven工程的時候,那個目錄名稱後面會帶上-X.Y.Z版本號).
所以自己定製了一套調試Tomcat應用的方法:
Windows 10
VSCode:1.45.1
Debug for Java:0.26.0
Maven for Java:0.21.4
Language Support for Java(TM) by Red Hat:0.62.0
Trigger Task on Save:0.2.16
launch.json:
{
"version": "0.2.0",
"configurations": [
{
"type": "java",
"name": "Debug (Launch)",
"request": "launch",
"mainClass": "org.apache.catalina.startup.Bootstrap",
"args": "start",
"projectName": "Maven主工程名稱,如果是Maven父子結構,則爲Web工程的名字",
"classPaths": [
"Tomcat根目錄\\bin\\tomcat-juli.jar",
"Tomcat根目錄\\bin\\bootstrap.jar"
],
"vmArgs": "-Djava.util.logging.config.file=\"Tomcat根目錄\\conf\\logging.properties\" -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Djava.io.tmpdir=\"Tomcat根目錄\\temp\" -Dcatalina.base=\"Tomcat根目錄\" -Dcatalina.home=\"Tomcat根目錄\""
}
]
}
tasks.json
{
"version": "2.0.0",
"tasks": [
{
"label": "compile",
"type": "shell",
"command": "mvn -B clean package",
"group": "build",
"problemMatcher": []
},
{
"label": "updateResource",
"type": "shell",
"isBackground": true,
"command": ".vscode/updateResource.bat ${relativeFile}",
"group": "build",
"problemMatcher": []
}
]
}
settings.json
含有web資源的主工程相對目錄說明:
假如maven的web項目結構如下:
則含有web資源的主工程相對目錄是
sample-web/src/main/resources/webapp
{
......
......
"triggerTaskOnSave.tasks":{
"build": [
"含有web資源的主工程相對目錄/**/*.*"
]
},
"triggerTaskOnSave.on": true,
"triggerTaskOnSave.selectedTask": "updateResource"
}
updateResource.bat
@echo off
cd %~dp0..
echo '%1'|find "含有web資源的主工程相對目錄" >null || (echo "[%1] is not a resouce file!" && exit 1)
set OBJFILE=%1
::下面的語句是把修改文件的相對目錄替換到tomcat運行容器的docBase目錄的相應位置
::如原來修改的文件是sample-web/src/main/resources/webapps/WEB-INF/views/common/login.jsp
::需要覆蓋到sample-web/target/sample-web-1.0.1/WEB-INF/views/common/login.jsp
::則下面的語句就變成
::copy "%1" "%OBJFILE:sample-web/src/main/resources/webapps=sample-web/target/sample-web-1.0.1%"
::實際運行的語句是
::copy "sample-web/src/main/resources/webapps/WEB-INF/views/common/login.jsp" "sample-web/target/sample-web-1.0.1/WEB-INF/views/common/login.jsp"
copy "%1" "%OBJFILE:含有web資源的主工程相對目錄=含有web資源的主工程名稱\target\docBase目錄%"
exit 0
在Tomcat根目錄下的conf\Catalina\localhost目錄中:
添加如下文件
sample.xml
<Context path="/sample" reloadable="true"
docBase="D:/sample/sample-web/target/sample-web-1.0.0"
workDir="工作目錄">
</Context>
設置完以上的內容後,就可以debug啓動tomcat,並且在修改web資源的時候自動更新了