转自蒋国纲 www.cnblogs.com/guogangj/p/5505228.html

用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/ciscoo/p/6388667.html

(转)用 Maven 部署 war 包到远程 Tomcat 服务器相关推荐

  1. 170329、用 Maven 部署 war 包到远程 Tomcat 服务器

    过去我们发布一个Java Web程序通常的做法就是把它打成一个war包,然后用SSH这样的工具把它上传到服务器,并放到相应的目录里,让Tomcat自动去解包,完成部署. 很显然,这样做不够方便,且我们 ...

  2. 知识小罐头04(idea+maven+部署war包到tomcat 下)

    上一节新建了一个基本的maven web环境,现在最快速度新建一下springmvc环境! 1.最快搭建springmvc环境 什么叫做最快,当然是怎么简单怎么来啦!由于内容都是很熟悉的东西,serv ...

  3. Eclipse利用Maven的插件部署web项目到远程tomcat服务器

    使用maven的自动部署功能可以很方便的将maven工程自动打包并且部署到远程tomcat服务器,省去一些繁琐的操作,节省大量时间. 我使用的tomcat版本是8.5,tomcat7和tomcat8都 ...

  4. 部署WAR包实时查看Tomcat的状态和日志

    在不重启Tomcat的情况下部署WAR包实时输出日志的方法: 注意:以下方式只适合Linux. 一.定位错误 查看Tomcat日志的尾部 tail -n 50 /opt/tomcat8/logs/ca ...

  5. 知识小罐头03(idea+maven+部署war包到tomcat 上)

    自学的的小伙伴第一就要用maven!自学的的小伙伴第一就要用maven!自学的的小伙伴第一就要用maven! 重要的事说三遍!maven本质上,其实就是一种目录的格式,没有什么特别的地方!而且,你可以 ...

  6. docker制作tomcat镜像并部署war包

    模拟面试小白: 需求:有一台没有网络的服务器,使用docker部署war包,没有tomcat镜像,限时30分钟. 小白:没网部署war包干啥,是不是工作不饱和让你们太闲了. 我:傻瓜,怪我没表达清楚, ...

  7. docker 构建tomcat镜像部署war包

    docker 构建tomcat容器部署war包 拉取tomcat镜像 docker pull tomcat:8.5-alpine 查看镜像 docker images 构建并启动容器 docker r ...

  8. 华为云服务器上部署war包(虚拟机也同样适用)

    目录 linux部署war包 安装jdk 关闭防火墙 简单粗暴(推荐虚拟机使用) 复杂但安全(推荐服务器使用) 安装tomcat 部署war包 linux部署war包 安装jdk 执行命令查看可安装j ...

  9. Maven(三):将web项目的war包热部署到远程Tomcat服务器

    相关阅读: Maven(一):安装与环境配置.使用Maven搭建web项目 Maven(二):常用命令.依赖管理 Maven(三):将web项目的war包热部署到远程Tomcat服务器 Maven(四 ...

最新文章

  1. TestLink1.9.3测试用例:Excel转换XML工具一
  2. [2014百度之星资格赛]
  3. Log4Net 使用 FileAppender (log4net 1.2.10.0)
  4. dockerfile构建nginx并结合php
  5. hadoop安装,提前确认hadoop版本是32位还是64位。
  6. 【Python】获取星期字符串
  7. 题目1006:ZOJ问题
  8. Asp.net MVC2使用第三方控件
  9. UVa 253 Cube paiting
  10. 推荐几款好用的网站CMS管理系统
  11. java怎么使用sni,如何设置使用SNI提供两个SSL证书的Tomcat?
  12. xamp:在shell中运行mysql
  13. Mounty(卷“xxx”不可重新挂载)挂载失败解决方法
  14. ThinkAdmin列目录/任意文件读取(CVE-2020-25540 )漏洞复现及环境搭建
  15. 苹果无线耳机使用方法_苹果手机11新手使用方法
  16. Android开发示例
  17. 阿里云OSS域名配置及简单上传
  18. BIhuman商业智能和数据仓库高
  19. Ubuntu安装Eclipse,maven
  20. 90 后高管:“下不手开除 70、80 后,公司死了谁负责?”

热门文章

  1. golang 的枚举
  2. 在CentOS 6上使用yum安装lnmp服务
  3. apache/nginx/nodejs原理简析
  4. Centos 系统swap虚拟内存添加与删除配置
  5. Centos8 cmake运行失败 undefined symbol archive_write_add_filter_zstd
  6. maya如何导出ue4_Maya建模师分享干货的时间到啦,教你用UE4如何导入动画
  7. activity动态加签任意节点
  8. 12.C++ string 操作
  9. 移动端touch与click
  10. 在 Go 语言中增强 Cookie 的安全性