VSCode調試Tomcat應用(不用Tomcat插件)

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資源的時候自動更新了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章