Tomcat Maven 插件

在 Maven 項目中,可以使用 Tomcat Maven 插件tomcat7-maven-plugintomcat-maven-plugin)來直接部署 WAR 文件到 Tomcat 服務器,而無需手動復制 WAR 文件到 webapps 目錄。以下是詳細的使用方法:


1. 配置 Tomcat Maven 插件

pom.xml<plugins> 部分添加以下配置:

使用 tomcat7-maven-plugin(Tomcat 7+)

<build><plugins><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration><!-- Tomcat 管理后臺 URL --><url>http://localhost:8080/manager/text</url><!-- Maven settings.xml 中配置的 server ID --><server>tomcat-admin</server><!-- 部署的上下文路徑(如 /myapp) --><path>/myapp</path><!-- 可選:用戶名和密碼(也可以在 settings.xml 中配置) --><username>admin</username><password>admin</password></configuration></plugin></plugins>
</build>

使用 tomcat-maven-plugin(Tomcat 6,較舊)

<plugin><groupId>org.codehaus.mojo</groupId><artifactId>tomcat-maven-plugin</artifactId><version>1.1</version><configuration><url>http://localhost:8080/manager/html</url><server>tomcat-admin</server><path>/myapp</path></configuration>
</plugin>

2. 配置 Tomcat 管理用戶

Tomcat 需要啟用 Manager App 并配置用戶權限才能通過 Maven 插件部署。

修改 conf/tomcat-users.xml

<tomcat-users><role rolename="manager-script"/>  <!-- 允許使用 /manager/text API --><role rolename="manager-gui"/>     <!-- 允許訪問 /manager/html 界面 --><user username="admin" password="admin" roles="manager-script,manager-gui"/>
</tomcat-users>
  • 重啟 Tomcat 使配置生效:
    ./bin/shutdown.sh && ./bin/startup.sh
    

3. 在 Maven settings.xml 中配置憑據(可選)

為了避免在 pom.xml 中明文存儲密碼,可以在 ~/.m2/settings.xml 中配置:

<settings><servers><server><id>tomcat-admin</id>  <!-- 與 pom.xml 中的 <server> 對應 --><username>admin</username><password>admin</password></server></servers>
</settings>

4. 使用 Maven 命令部署

(1) 部署 WAR 文件

mvn tomcat7:deploy
  • 首次部署:將 WAR 文件上傳到 Tomcat 的 webapps/ 目錄并自動啟動應用。
  • 訪問應用http://localhost:8080/myapp

(2) 重新部署(更新代碼后)

mvn tomcat7:redeploy
  • 適用于代碼修改后重新發布。

(3) 啟動/停止應用

mvn tomcat7:start     # 啟動應用
mvn tomcat7:stop      # 停止應用
mvn tomcat7:undeploy  # 徹底刪除應用

5. 常見問題及解決

問題 1:403 Access Denied

  • 原因:Tomcat 管理用戶未正確配置或權限不足。
  • 解決
    1. 檢查 tomcat-users.xml 是否包含 manager-script 角色。
    2. 確保 settings.xmlpom.xml 中的用戶名/密碼正確。

問題 2:Connection Refused

  • 原因:Tomcat 未運行或 Manager App 未啟用。
  • 解決
    1. 啟動 Tomcat:
      ./bin/startup.sh
      
    2. 確保 manager 應用存在于 webapps/ 目錄。

問題 3:NoSuchMethodError(版本沖突)

  • 原因:插件版本與 Tomcat 版本不兼容。
  • 解決
    • Tomcat 7/8 使用 tomcat7-maven-plugin
    • Tomcat 9/10 可嘗試 tomcat10-maven-plugin(社區維護版本)。

6. 高級配置

(1) 跳過測試

mvn tomcat7:deploy -DskipTests

(2) 指定環境(Profile)

pom.xml 中定義不同環境的配置:

<profiles><profile><id>prod</id><properties><tomcat.url>http://prod-server:8080/manager/text</tomcat.url></properties></profile>
</profiles>

運行命令時激活 Profile:

mvn tomcat7:deploy -Pprod

(3) 自定義 WAR 文件名

<build><finalName>myapp</finalName>  <!-- 生成 target/myapp.war -->
</build>

總結

操作命令說明
首次部署mvn tomcat7:deploy上傳 WAR 并啟動
重新部署mvn tomcat7:redeploy更新代碼后重新發布
停止應用mvn tomcat7:stop停止應用(不刪除)
徹底刪除mvn tomcat7:undeploy從 Tomcat 移除應用
調試連接問題mvn -X tomcat7:deploy顯示詳細日志

通過 Tomcat Maven 插件,可以實現 一鍵部署,特別適合持續集成(CI/CD)流程。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/86606.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/86606.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/86606.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【開源工具】一鍵解決使用代理后無法訪問瀏覽器網頁問題 - 基于PyQt5的智能代理開關工具開發全攻略

&#x1f310;【開源工具】一鍵解決使用代理后無法訪問瀏覽器網頁問題 - 基于PyQt5的智能代理開關工具開發全攻略 &#x1f308; 個人主頁&#xff1a;創客白澤 - CSDN博客 &#x1f525; 系列專欄&#xff1a;&#x1f40d;《Python開源項目實戰》 &#x1f4a1; 熱愛不止于代…

異步IO框架io_uring實現TCP服務器

一、io_uring介紹 io_uring是 Linux 于 2019 年加入到內核的一種新型異步 I/O 模型&#xff0c;io_uring 主要為了解決 原生AIO&#xff08;Native AIO&#xff09; 存在的一些不足之處。下面介紹一下原生 AIO 的不足之處&#xff1a; 系統調用開銷大&#xff1a;提交 I/O 操作…

【docker】docker run參數說明

功能 拉起容器。 參數 -i&#xff0c;--interactive 保持容器標準輸入放開&#xff0c;就算沒有終端也放開。 可以理解為可以向容器內輸入東西&#xff0c;比如&#xff1a; [rootlocalhost ~]# echo 111 | docker run -i yaxin:1.0 cat 111--cap-add 用于向容器添加特定的…

從0開始學習計算機視覺--Day04--損失函數

在上次學習中&#xff0c;我們知道了線性分類的函數是f(x,W),但并沒有解釋要怎么得到W權重矩陣的值&#xff0c;以及我們要怎么用訓練數據來確定它的最優權重矩陣。在之前我們知道&#xff0c;假設用了10種類別的圖片用于訓練&#xff0c;將其中一種圖片輸入模型后&#xff0c;…

【V2.0】TPS-61088升壓板-3.7V升壓到9V電源板

優化一下上一版本的升壓板&#xff1a; TPS-61088升壓板-3.7V升壓到9V電源板-CSDN博客 改動參考了官方的demo板 加了很多的電容&#xff0c;封裝很大&#xff0c;同時去掉了AGND&#xff0c;直接使用一個GND。 補償電路增加了一個47pF的電容。 EN引腳改用輸入的電壓分壓來啟…

基于DeepSeek搭建Dify智能助手國產化架構運行arm64

基于DeepSeek搭建Dify智能助手國產化架構運行arm64 基于DeepSeek搭建Dify智能助手案例介紹案例內容1 概述1.1 背景介紹1.2 適用對象1.3 案例時間1.4 案例流程1.5 資源總覽 2.啟動 Docker 容器沒有的安裝2.1沒有Docker安裝 3 云主機部署DeepSeek3.1 安裝Ollama 4.安裝Dify4.1Doc…

PyQtNode Editor 第一篇環境配置

PyQtNode Editor 以其獨特的功能和靈活的擴展性&#xff0c;吸引了眾多開發者的目光。 這篇博客作為系列開篇&#xff0c;將詳細介紹開發 PyQtNode Editor 所需的基礎環境、安裝步驟&#xff0c;同時深入解讀一段簡單的 PyQt5 代碼&#xff0c;為后續的開發工作奠定基礎。 一…

Unity 腳本自動添加頭部注釋

&#x1f4dd; Unity Script Header 注釋生成器 一個輕量、可配置的 Unity 編輯器工具&#xff0c;在創建 .cs 腳本時自動插入統一格式的注釋頭信息。 支持作者、郵箱、公司、地點、版權、描述等字段&#xff0c;所有信息都可通過 Project Settings 界面配置并動態開關。 &…

偏微分方程能量變化分析2

題目 問題 9. 考慮以下帶有邊界條件的偏微分方程&#xff08;PDE&#xff09;&#xff1a; u t t ? c 2 u x x 0 , x > 0 , u_{tt} - c^2 u_{xx} 0, \quad x > 0, utt??c2uxx?0,x>0, u ∣ x 0 0. u|_{x0} 0. u∣x0?0. 定義能量泛函&#xff1a; E ( t ) …

模型部署和推理架構學習筆記

一. 初步認識模型部署 1. 什么是ONNX&#xff1f; ONNX 就是一個 中間人 或 通用翻譯器。它讓你在喜歡的框架&#xff08;如 PyTorch&#xff09;里訓練好模型后&#xff0c;能輕松地把它變成一種 標準格式。然后&#xff0c;這個標準格式的模型可以被 很多不同的工具和硬件 …

OpenCV CUDA模塊設備層-----逐通道的正弦運算函數sin()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 OpenCV 的 CUDA 模塊&#xff08;cv::cudev&#xff09; 中的一個設備端數學函數&#xff0c;用于在 CUDA 核函數中對 uchar4 類型&#xff08;即…

人工智能-基礎篇-2-什么是機器學習?(ML,監督學習,半監督學習,零監督學習,強化學習,深度學習,機器學習步驟等)

1、什么是機器學習&#xff1f; 機器學習&#xff08;Machine Learning, ML&#xff09;是人工智能的一個分支&#xff0c;是一門多領域交叉學科&#xff0c;涉及概率論、統計學、逼近論、凸分析等數學理論。其核心目標是讓計算機通過分析數據&#xff0c;自動學習規律并構建模…

【deepseek】TCP/IP ISO 卸載

TCP/IP 全卸載中的 LSO&#xff08;Large Send Offload&#xff09; 和 LRO&#xff08;Large Receive Offload&#xff09; 是網卡硬件加速技術&#xff0c;其核心目標是 將 TCP/IP 協議棧的處理任務從 CPU 轉移到網卡硬件&#xff0c;從而大幅降低 CPU 負載并提升網絡性能。以…

抖音小程序支付錯誤碼141211

前情 uni-app是我比較喜歡的跨平臺框架&#xff0c;它能開發小程序/H5/APP(安卓/iOS)&#xff0c;重要的是對前端開發友好&#xff0c;自帶的IDE讓開發體驗也挺棒的&#xff0c;公司項目就是主推uni-app 公司今年準備新開一個項目&#xff0c;但是對項目的未來和項目要做的規…

springcloud/springmvc協調作用傳遞驗證信息

微服務架構的拆分&#xff0c;各模塊之間使用feign組件來進行相互http轉發通信。 前端與后端之間使用springcloud的網關來進行協調。 現在問題出現&#xff0c;用戶的信息如何進行傳遞&#xff1f; 前端請求攜帶請求頭&#xff0c;請求頭中的authorization為攜帶的對應token…

Apache Flink Kafka 寫連接器源碼深度剖析

一、架構概述 Apache Flink 提供的 Kafka 寫入連接器是實現與 Kafka 消息隊列集成的關鍵組件&#xff0c;支持多種語義保證和靈活配置選項。本文將深入分析 Flink Kafka 寫入連接器的源碼實現&#xff0c;包括架構設計、核心類、事務機制和性能優化等方面。 1.1 整體架構 Fl…

強化學習理論基礎:從Q-learning到PPO的算法演進(2)

文章目錄 Policy gradient思想(REINFORCE算法)優勢函數PPO(Proximal Policy Optimization)Policy gradient思想(REINFORCE算法) 下面我們來探討一下Policy gradient策略,也就是REINFORCE算法。 在玩剪刀石頭布這個簡單的游戲中,我們可以有不同的策略。一種是完全隨機地…

Oracle數據庫文件變成32k故障恢復--惜分飛

最近一個客戶數據庫重啟系統之后,數據文件大小變為了32kb,我接手的不是第一現場(客戶那邊嘗試了rman還原操作),查看alert日志,數據庫最初報錯 Wed Jun 18 13:09:23 2025 alter database open Block change tracking file is current. Read of datafile D:\APP\ADMINISTRATOR\OR…

移動端 uniapp 寫一個可自由拖拽的小鍵盤

寫之前要考慮&#xff1a; 鍵盤展開后&#xff0c;不能超過手機邊緣在底部展開鍵盤&#xff0c;鍵盤應出現在展開按鈕上方&#xff1b;以此類推重復點擊展開按鈕&#xff0c;關閉鍵盤 效果&#xff1a; 代碼如下&#xff0c;有些按鍵邏輯還需要優化 <template><vi…

《二分枚舉答案(配合數據結構)》題集

文章目錄 1、模板題集2、課內題集3、課后題集1. 字符串哈希2. 并查集3. ST表 1、模板題集 分巧克力 2、課內題集 倒水 冶煉金屬 連續子序列的個數 3、課后題集 括號內的整數代表完整代碼行數。 1. 字符串哈希 你猜猜是啥題(60) 2. 并查集 拯救萌萌(72) 3. ST表 GCD不小…