編輯 $CATALINA_HOME/conf/tomcat-users.xml:
<role rolename="manager-gui"/> <role rolename="manager-script"/> <role rolename="manager-jmx"/> <role rolename="manager-status"/> <role rolename="admin-gui"/> <role rolename="admin-script"/> <user username="tomcat" password="tomcat" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-script,admin-gui"/>
關鍵點:必須包含 manager-script 角色,否則 Maven 部署會 403。驗證:瀏覽器訪問 https://host:8080/manager/text 應彈出認證框並成功登入。
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<url>https://your-server:8082/manager/text</url>
<server>test</server>
<username>tomcat</username>
<password>tomcat</password>
<path>/your-app</path> <!-- 部署上下文路徑,可選 -->
<update>true</update> <!-- 存在則更新 -->
</configuration>
</plugin>
注意:URL 必須以 /manager/text 結尾(Tomcat 7 專用),Tomcat 6 用 /manager/html。
<servers>
<server>
<id>test</id> <!-- 對應 pom.xml -->
<username>tomcat</username>
<password>tomcat</password>
</server>
</servers>
# 在子模組目錄下執行 mvn clean package tomcat7:redeploy # 或僅部署已打包的 WAR mvn tomcat7:deploy -DskipTests
| 錯誤碼 | 原因 | 解決 |
|---|---|---|
| 401 Unauthorized | 用戶名/密碼錯誤,或 settings.xml | 核對三處憑證一致性 |
| 403 Forbidden | 1) URL 用 /manager/html 而非 /manager/text2) tomcat-users.xml 缺少 manager-script 角色 | 修正 URL、補全角色 |
| Connection refused | Tomcat 未啟動、端口防火牆阻擋、IP 綁定錯誤 | 啟動 Tomcat、開放端口、綁定 0.0.0.0 |
| OutOfMemoryError | PermGen/Metaspace 不足(熱部署類洩漏) | 增大 MAVEN_OPTS=-Xmx512m -XX:MaxMetaspaceSize=256m |
startup.sh,避免 IDE 托管導致端口衝突或類載入器隔離問題。<server>dev</server>、<server>prod</server> 對應不同 settings.xml 憑證。maven-release-plugin 自動化版本遞增、標籤、部署。/actuator/health 或自定義端點驗證服務可用性。
