Maven 項目修改 server.xml 中 <Context path="/newPath" ...> 後,首次啟動正常,再次啟動 path 自動恢復原值,項目名稱也變回原狀。
Tomcat 在啟動時會讀取 server.xml,但若項目部署在 webapps 目錄下,Tomcat 會根據 WAR 包或目錄名稱自動創建 Context,覆蓋手動配置。Maven 打包生成的 WAR 名稱(如 project-1.0.war)決定了默認上下文路徑。
在 pom.xml 中指定最終構建名稱:
<build>
<finalName>myapp</finalName> <!-- 生成 myapp.war -->
</build>
部署後訪問路徑為 https://host:port/myapp,無需修改 server.xml。
在 $CATALINA_BASE/conf/Catalina/localhost/ 下創建 myapp.xml:
<Context path="/myapp" docBase="/path/to/myapp.war" reloadable="true" />
此配置優先級高於 server.xml 和自動部署,且不會被覆蓋。
在 server.xml 的 <Host> 中設置:
<Host name="localhost" appBase="webapps" unpackWARs="false" autoDeploy="false">
但會導致熱部署失效,需手動管理部署。
詳細說明見:Tomcat Context path 配置詳解