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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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不小…