170329、用 Maven 部署 war 包到远程 Tomcat 服务器
过去我们发布一个Java Web程序通常的做法就是把它打成一个war包,然后用SSH这样的工具把它上传到服务器,并放到相应的目录里,让Tomcat自动去解包,完成部署。
很显然,这样做不够方便,且我们在用SSH把文件拽上去的时候很可能会搞错。(当然了大厂就不会有这样的问题,因为人家有运维团队专门来干这个事情,哈哈)
现在我要的是:一行命令部署到本地服务器,在本地测试一番,没有问题的话就一行命令部署到正式服务器,另外正式服务器的密码只有我自己知道,只有我能执行这个部署(其它开发组员不知道正式服务器密码)。
OK,我们先要在Maven(POM.XML)中引入这个插件:
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
</build>
这个叫“tomcat7-maven-plugin”的插件是利用Tomcat的“manager”模块来实现war包部署的,所以必须确保Tomcat安装了Manager模块,(看看webapp下有没有Manager目录)它虽然名字带“tomcat7”,但Tomcat8也适用,我用的就是Tomcat8。接下来我们对本地的Tomcat的manager模块进行一些配置,打开本地Tomcat的tomcat-users.xml文件,增加这样的配置:
<user username="deployer" password="654321" roles="manager-script"/>
这个叫“deployer”的用户,角色设定为“manager-script”,表明他可以使用Tomcat的manager模块的后台脚本管理,BTW,如果角色为“manager-gui”则表示此用户可使用manager模块的前端网页管理。然后对正式服务器也做一个类似的配置。
接下来完善一下tomcat7-maven-plugin的配置:
<properties>
<warPackageName>MyWebAppDemo</warPackageName>
<tomcat.deploy.server>localTestServer</tomcat.deploy.server>
<tomcat.deploy.serverUrl>http://localhost/manager/text</tomcat.deploy.serverUrl>
</properties>
<profiles>
<profile>
<id>deploy2production</id>
<properties>
<tomcat.deploy.server>productionServer</tomcat.deploy.server>
<tomcat.deploy.serverUrl>http://120.26.93.30:8080/manager/text</tomcat.deploy.serverUrl>
</properties>
</profile>
</profiles>
<build>
<finalName>${warPackageName}</finalName>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<server>${tomcat.deploy.server}</server>
<url>${tomcat.deploy.serverUrl}</url>
<path>/${warPackageName}</path>
</configuration>
</plugin>
</plugins>
</build>
OK,现在来讲解一番:
Configuration-Server
Configuration中的server是个变量,叫tomcat.deploy.server,我并没有写死,因为我们要将WAR包部署到不同服务器去,而这个变量则由前面的properties来确定,我们可以看到,properties中,tomcat.deploy.server被赋值为localTestServer,这就是我们的默认值,但通过调整Maven的运行参数,我们可以将它修改为别的值,那么localTestServer又表示什么呢?我前面说了,服务器的密码是自己定的,而且不希望别人知道,别的开发组员能各自决定自己本地服务器的密码,但他们无需知道我的密码,所以这个localTestServer的相关的内容是定义在“~/.m2/settings.xml”中的,在Windows7下通常就是在“C:\Users\(用户名)\.m2\settings.xml”这里。打开这个配置文件,在servers中增加两个server,也就是我们要将程序部署上去的两个server。
<servers>
<server>
<id>productionServer</id>
<username>deployer</username>
<password>123456</password>
</server>
<server>
<id>localTestServer</id>
<username>deployer</username>
<password>654321</password>
</server>
</servers>
这个貌似没什么好说了,这个配置非常的self-explanatory。
Configuration-url
Configuration中的url也是个变量,很显然,我也不能把它写死,但它不像用户名和密码那么敏感,所以直接出现在POM.XML中也无所谓,默认情况下,其值是“http://localhost/manager/text”,这个地址便是Tomcat的Manager模块的后台脚本入口,url的值同样可以通过Maven的运行参数调整。
Configuration-path
要将WAR包部署到哪里去?要指定一个path,如果path为“/”,也就是部署为传说中的ROOT.WAR,这次我们指定了一个名为MyWebAppDemo的path。部署成功之后可以通过http://localhost/MyWebAppDemo来访问。
profile参数
也就是前面提到的Maven的参数,这里我们定了一个参数,叫deploy2production,在运行mvn的时候带上这个参数的话,就会用参数中的tomcat.deploy.server,tomcat.deploy.serverUrl来取代默认的值。
OK,所有的工作都完成了,就剩下部署了。开始吧:
mvn tomcat7:redeploy
为什么是redeploy而不是deploy?因为用deploy的话在我这里会出现些问题,具体啥问题就不说了,也许你那里正常,如果没问题的话用deploy也行啊。执行完这个之后,我们的程序就被部署到本地Tomcat服务器上了。再来看,这是带参数的mvn:
mvn tomcat7:redeploy -Pdeploy2production
这么一下,我们的程序就被部署到正式服务器去了。
如果你想把程序移除掉,那很简单,只需要使用undeploy来代替redeploy即可。
转载于:https://www.cnblogs.com/zrbfree/p/6709078.html
170329、用 Maven 部署 war 包到远程 Tomcat 服务器相关推荐
- (转)用 Maven 部署 war 包到远程 Tomcat 服务器
转自蒋国纲 www.cnblogs.com/guogangj/p/5505228.html 用Maven部署war包到远程Tomcat服务器 过去我们发布一个Java Web程序通常的做法就是把它打成 ...
- 知识小罐头04(idea+maven+部署war包到tomcat 下)
上一节新建了一个基本的maven web环境,现在最快速度新建一下springmvc环境! 1.最快搭建springmvc环境 什么叫做最快,当然是怎么简单怎么来啦!由于内容都是很熟悉的东西,serv ...
- Eclipse利用Maven的插件部署web项目到远程tomcat服务器
使用maven的自动部署功能可以很方便的将maven工程自动打包并且部署到远程tomcat服务器,省去一些繁琐的操作,节省大量时间. 我使用的tomcat版本是8.5,tomcat7和tomcat8都 ...
- 部署WAR包实时查看Tomcat的状态和日志
在不重启Tomcat的情况下部署WAR包实时输出日志的方法: 注意:以下方式只适合Linux. 一.定位错误 查看Tomcat日志的尾部 tail -n 50 /opt/tomcat8/logs/ca ...
- 知识小罐头03(idea+maven+部署war包到tomcat 上)
自学的的小伙伴第一就要用maven!自学的的小伙伴第一就要用maven!自学的的小伙伴第一就要用maven! 重要的事说三遍!maven本质上,其实就是一种目录的格式,没有什么特别的地方!而且,你可以 ...
- docker制作tomcat镜像并部署war包
模拟面试小白: 需求:有一台没有网络的服务器,使用docker部署war包,没有tomcat镜像,限时30分钟. 小白:没网部署war包干啥,是不是工作不饱和让你们太闲了. 我:傻瓜,怪我没表达清楚, ...
- docker 构建tomcat镜像部署war包
docker 构建tomcat容器部署war包 拉取tomcat镜像 docker pull tomcat:8.5-alpine 查看镜像 docker images 构建并启动容器 docker r ...
- 华为云服务器上部署war包(虚拟机也同样适用)
目录 linux部署war包 安装jdk 关闭防火墙 简单粗暴(推荐虚拟机使用) 复杂但安全(推荐服务器使用) 安装tomcat 部署war包 linux部署war包 安装jdk 执行命令查看可安装j ...
- Maven(三):将web项目的war包热部署到远程Tomcat服务器
相关阅读: Maven(一):安装与环境配置.使用Maven搭建web项目 Maven(二):常用命令.依赖管理 Maven(三):将web项目的war包热部署到远程Tomcat服务器 Maven(四 ...
最新文章
- Membership学习(二)membership入门
- 洪水同频率放大的方法_我们应该怎么选择放大器配件?
- 论文推荐|【KSII TIIS 2021】DP-LinkNet:一种用于古籍文档图像二值化的卷积网络(有源码)...
- 矩阵特征值的一些特点
- 我所期待的vs2007
- jquery中的html代码、文本以及值
- 大型项目编译注意事项
- [转]对企业管理和团队的理解
- 有符号char和无符号char
- FCPX内置音效库汉化版
- PCIE标准共享,以及其机械尺寸图
- 光伏抢装潮:630的得与失
- Linux环境下进行本地Blast比对——操作流程
- 激活函数(sigmoid、Tanh、ReLU、Leaky ReLU、ELU、Maxout)
- 任意多边形的面积(C语言)
- 修改计算机管理员密码,该怎么改电脑administrator密码
- IDEA中如何快速导包
- 名帖09 邓石如 篆书《四箴四条屏》
- python 字符的编码
- crmeb知识付费2.1.1免授权版本,包含PC端,包更新
热门文章
- laravel运用redis存储数据和读取的方式
- thinkphp5.0l路由冲突原因及解决方法
- 万能驱动安装器_Windows驱动安装指南
- vue 计算属性_lt;Vue 源码笔记系列6gt;计算属性 computed 的实现
- MySQL笔记-查询进程列表(查客户端IP、使用的用户、当前状态、ID号、使用的库)及断开客户端连接
- MySQL笔记-time类型的使用(hh:mm:ss)及time类型对比
- Java工作笔记-使用Maven创建Spring Boot并生成war包外部tocamt运行
- 前端笔记-Vue cli中使用axios后JavaScript变量传输给vue变量要注意的地方
- Java前端笔记-后端Springboot,前端vue,Nginx使前后端分离
- filecoin白皮书_【Filecoin挖矿小知识】在lotus开发网上可以参与Filecoin挖矿吗?