【04】将Maven项目热部署到远程tomcat服务器上

1.虽然现在Maven中央仓库中支持的tomcat插件只支持到tomcat7这个版本,但是可以利用这个插件对Web项目进行热部署,热部署到远程服务器的tomcat服务器上,远程服务器上的tomcat版本可以是更高的版本,比如说tomcat8、9、10或更高的版本中,以此来突破Maven仓库tomcat7插件版本的局限性。

将Maven项目热部署到远程tomcat中


本尊

1.为什么要写这篇文章?

1.1web项目分模块开发

开发Web项目,用到了Maven对Web项目进行分模块开发,提高项目构建、发布、管理的灵活性。

1.2分模块开发解决项目管理的灵活性的主要表现

1.2.1Web项目的依赖管理变得更加灵活

web项目依赖jar包的管理不再乱麻一团,管理起来变得清晰明了了,升级jar包的版本也变得更灵活方便,直接根据Maven官方中央仓库的版本号修改升级或降级即可。

1.2.2对Web项目模块的管理变得更灵活,促进公司对程序员的培养与管理

(1)分模块开发之后,项目增加一个模块,移除一个模块不再是麻烦事。

(2)从公司招聘新员工角度来说,招一个程序员进来,让其开发一个项目模块,如果这个程序员是水货,能力达不到,他所开发的模块虽然没弄成,但是因为公司Web项目采用了分模块开发,不会影响整个公司Web项目的大局,直接从整个项目模块中移除掉他所开发的模块即可。这都是Maven的聚合能力提供了这样一个好的支撑,立下了汗马功劳。可以说,对项目,对员工的管理都变得更具有灵活性,公司可以大胆的让新员工做尝试,快速促进其融入公司项目的开发中,以项目提高其软件开发技能。

1.2.3项目的多环境部署变得更加的灵活

(1)使用Maven构建Web项目之后,让Web项目可以轻松的一键热部署到多个环境,如线上环境、开发环境、测试环境。

(2)注意:无论你的Web项目运行所处环境是windows系统还是linux系统都可以一键搞定,关键还是热的,即对某一个项目模块修改升级之后,可以立即通过热部署,一键实现某个环境的升级部署。从这一点上来说,以后Web项目的bug修复,无论是线下、还是线上都将变得极其的容易。

1.2.4私服仓库的使用,使得Web项目的团队协作开发变得更加灵活

(1)分模块开发后,由于团队成员每个人负责开发的模块不一样,当团队某个成员需要使用其他成员提供的模块支撑(依赖)时,可以通知其他团队成员将自己开发的模块,通过Maven快速的上传发布到公司的私服仓库,该成员直接从私服仓库同步获取新的功能支撑即可,提升了项目的集成效率、使得团队协作开发变理更加灵活方便。

(2)私服仓库构建起了本地仓库到阿里云私服仓库和Maven中央仓库之间的桥梁

当Web项目需要第三方开发者提供的jar资源支持时,首先从本地仓库中去寻找是否存在这个资源,如果没有找到,则需要到公司的私服仓库里面去找,公司私服仓库没有就需要从阿里云镜像私服仓库(即Maven中央仓库的镜像)加载 ,如果阿里云镜像私服仓库中没有我们项目开发所需要的jar资源时,会到Maven的中央仓库里去找我们所需要的资源。

在这个过程当中,公司的私服仓库需要做几件事:
一是要创建一个代理仓库,配置好阿里云的私服仓库组的地址。
二是把这个代理仓库添加到public仓库组里面,让公司的开发者直接访问这个public仓库组,致其可以访问到阿里云的私服仓库组。
三是在public仓库组里面也可加上Maven中央仓库组的配置(默认是加上了的,不用我们管)。

总之一句话,就是利用公司的私服仓库组搞定与阿里云镜像仓库组与Maven中央仓库的连接,开发团队的每个成员在本地仓库中直接访问公司的私服仓库组就可以拿到公司其他成员或第三方公司开发的资源了(jar包等)。

2.一键热部署解决方案

2.1实现思路

由我们自己将修改后的war包上传到远程服务器的Tomcat中,变为由Intellij IDEA的maven插件帮我们实现。

2.2场景具体描述

(1)在Intelij IDEA中对Web项目修改升级后,使用Intellij IDEA中集成的Maven插件对项目资源进行重新打包。.
(2)打包后,使用maven将项目新的war包上传到l其他远程服务器的tomcat进行部署,例如远程linux系统中的tomcat服务器上。

3.一键热部署实现逻辑

(1)我们已经学过了web开发中的上传功能,那么我们是不是可以开发一个web项目,该web项目提供一个资源上传的功能,比如该项目的名字为A项目。

(2)然后我们将A项目部署到linux中的tomcat中,启动tomcat,然后我们在本地的浏览器中访问A项目。

(3)选择我们的war包,将上传请求发送给A项目,而A项目在接收到上传请求后,将war包存储到linux下的tomcat中的webapps目录下

(4)那么再细细的思考一下,那么能不能让maven去访问我们的项目A的上传功能,将项目的war包上传到linux下的tomcat中的webapps目录下呢?答案是可以的。

(5)说白了就是让我们的maven具备发送http请求的功能

(6)其实项目A是tomcat自带的一个web项目,不需要我们自己开发了。

4.一键热部署项目到远程服务器的具体操作步骤

4.1Tomcat中的ROOT项目的配置和使用

4.1.1在远程服务器上启动tomcat服务器
4.1.2访问Tomcat服务器首页

(1)在浏览器地址栏输入http://192.168.10.16:8080,访问tomcat服务器的首页(即广告页,相当于我们的项目A)

(2)tomcat的ROOT项目,是tomcat自带的一个web项目。
在这里插入图片描述

4.1.3点击tomcat首页的Manager App

(1)当我们点击Manager App时会先提示我们进行登录,在登录界面中输入帐号与密码即可进入到项目资源管理页面。如果点击后不可以进入,出现403 Access Denied时,可以按照步骤4.1.4和4.1.5的设置方法进行解决。

(2)当我们点击取消时,进入登录用户配置提示页面,在该页面中,tomcat提示我们需要在tomcat-user.xml文件中去配置我们的登录帐号信息。

在这里插入图片描述

4.1.4在tomcat-user.xml中配置远程服务器tomcat的账户信息
<
<think>嗯,用户想知道如何使用Maven和Cargo插件部署项目远程服务器。首先,我需要回顾一下相关的引用内容。引用1提到用户在使用Cargo插件时遇到了错误,尤其是在EC2服务器Tomcat8环境下。引用2给出了一个具体的pom.xml配置示例,使用的是Tomcat9,配置了hostname、用户名、密码和manager的URL。引用3则介绍了Cargo的基本功能和它支持的容器类型,说明它可以通过Maven插件实现自动化部署。 首先,我应该整理出部署的基本步骤。用户可能需要配置pom.xml中的Cargo插件,设置容器类型为remote,指定正确的容器ID(比如tomcat9x),然后配置hostname、manager的URL以及认证信息。然后,用户需要执行Maven命令如mvn cargo:deploy来触发部署。 不过,用户可能在配置过程中遇到问题,比如引用1中的错误。这时候需要检查配置是否正确,比如manager的URL是否可达,用户名密码是否正确,服务器防火墙是否开放了端口,还有Tomcat的manager应用是否已部署,用户是否有足够的权限。 另外,要注意Tomcat版本和Cargo插件版本的兼容性。比如,引用2中用了Tomcat9和Cargo插件1.8.2,而引用1是Tomcat8,可能需要不同的容器ID,比如tomcat8x。用户如果配置错了容器ID,就会导致部署失败。 还有,可能用户没有在Tomcat中启用manager应用,或者没有在tomcat-users.xml中配置正确的角色和用户权限。需要确保用户有manager-script角色,而不仅仅是manager-gui。 此外,服务器端的网络设置也很重要,比如EC2的安全组是否允许8080端口的入站流量,或者如果Tomcat监听的是其他端口,配置是否正确。还有,manager应用的URL是否正确,比如是否包含正确的上下文路径,如/manager/text,因为某些Tomcat版本可能需要使用不同的URL。 总结一下,教程应该包括配置pom.xml,设置容器类型和参数,确保服务器端配置正确,然后执行部署命令。同时,常见问题如认证失败、连接超时需要给出解决方案,比如检查用户名密码、网络连接等。</think>### 使用 Maven Cargo 插件部署项目远程服务器教程 #### 1. **环境准备** - 确保远程服务器已安装并运行 Tomcat,且启用了 `manager` 应用。 - 在 Tomcat 的 `tomcat-users.xml` 中配置用户权限,例如: ```xml <role rolename="manager-script"/> <user username="admin" password="admin" roles="manager-script"/> ``` 需重启 Tomcat 生效[^2][^3]。 #### 2. **配置 Maven 项目** 在项目的 `pom.xml` 中添加 Cargo 插件配置: ```xml <build> <plugins> <plugin> <groupId>org.codehaus.cargo</groupId> <artifactId>cargo-maven2-plugin</artifactId> <version>1.8.2</version> <configuration> <!-- 容器配置 --> <container> <containerId>tomcat9x</containerId> <!-- 根据Tomcat版本调整 --> <type>remote</type> </container> <!-- 部署配置 --> <configuration> <type>runtime</type> <properties> <cargo.hostname>服务器IP或域名</cargo.hostname> <cargo.servlet.port>8080</cargo.servlet.port> <cargo.remote.username>admin</cargo.remote.username> <cargo.remote.password>admin</cargo.remote.password> <cargo.remote.manager.url>http://服务器IP:8080/manager/text</cargo.remote.manager.url> </properties> </configuration> </configuration> </plugin> </plugins> </build> ``` **参数说明**: - `containerId`: 需与 Tomcat 版本匹配(如 `tomcat8x`、`tomcat9x`)[^2]。 - `cargo.remote.manager.url`: Tomcat Manager 的访问地址,注意 `/text` 后缀用于 API 交互[^2][^3]。 --- #### 3. **执行部署** 在项目根目录运行以下命令: ```bash mvn clean package cargo:deploy ``` **流程说明**: 1. `clean package`: 清理并打包项目为 WAR 文件。 2. `cargo:deploy`: 通过插件将 WAR 文件上传至远程 Tomcat 并部署。 --- #### 4. **常见问题解决** - **认证失败**:检查 `tomcat-users.xml` 中用户角色是否包含 `manager-script`[^2]。 - **连接超时**:确认服务器防火墙开放了 Tomcat 端口(如 8080),且安全组规则允许访问[^1]。 - **URL 路径错误**:确保 `cargo.remote.manager.url` 包含正确的上下文路径(如 `/manager/text`)。 --- #### 5. **扩展功能** - **热部署**:使用 `cargo:redeploy` 替代 `cargo:deploy` 更新已部署应用。 - **环境隔离**:通过 Maven Profile 配置多环境(开发/生产)的部署参数[^3]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清风百草

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值