当前位置: 首页 > news >正文

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.lqws.cn/news/547579.html

相关文章:

  • 第六章 STM32内存管理
  • 黑马JVM解析笔记(五):深入理解Java字节码执行机制
  • SpringBoot自动配置原理详解
  • 修复opensuse 风滚草rabbitmq的Error: :plugins_dir_does_not_exist问题
  • 关于前端npm install安装依赖和打包的一些问题记录
  • Django实战:自定义中间件实现全链路操作日志记录
  • 设计模式 | 桥接模式
  • K8s port、targetPort和nodePort区别
  • 使用Puppeteer提取页面内容的技巧
  • 小米路由器 AX3000T 解锁 SSH
  • TCP四层模型:网络协议核心解密
  • 鸿蒙HarmonyOS 关于图片、视频的选择详解
  • Veo 3 视频生成大模型完整操作教程(2025)
  • 《Effective Python》第十章 健壮性——始终将资源传递给生成器,并在外部由调用者清理它们
  • 【RAG面试题】如何获取准确的语义表示
  • ​​Git提交代码Commit消息企业级规范
  • algorithm ——————》双指针(移动0 复写0 快乐数 装水问题 以及数组中找几个数和为指定的元组)
  • 链表两数相加深度解析【进位】【边界条件】【迭代】【递归】
  • Spring Boot 应用开发实战指南:从入门到实战(内含实用技巧+项目案例)
  • 人工智能-基础篇-2-什么是机器学习?(ML,监督学习,半监督学习,零监督学习,强化学习,深度学习,机器学习步骤等)
  • Windows的xshell连接VW里的centos系统里的mysql失败解决方法
  • PostgreSQL 主从集群搭建
  • 杭州市长姚高员带队调研景联文科技,听取高质量数据集建设情况
  • [特殊字符] Python 批量合并 Word 表格中重复单元格教程(收货记录案例实战)
  • 从零开始的二三维CAD|CAE轻量级软件开发:学习以及研发,Gmsh的脚本编辑器设计!
  • python 脚本 遍历目录,并把目录下的非utf-8文件改成utf8
  • 16.2 Docker多阶段构建实战:LanguageMentor镜像瘦身40%,支持500+并发1.2秒响应!
  • 02【C++ 入门基础】标准输入输出初识/缺省参数
  • Qt 与 Halcon 联合开发六:基于海康SDK设计完整的相机类【附源码】
  • 【Elasticsearch】Linux环境下安装Elasticsearch