Maven热部署-不停止服务器情况下完成部署

使用阿里云服务器的都有意识到,当我们向服务器(例如tomcat)发布项目的时候,都要事先停止服务器(./shutdown.sh),然后将自己的web项目打包成war,上传到服务器的webapps目录下,然后重新启动tomcat(./startup.sh),后面会发现,并不能立即访问到项目,需要等待大概6分钟后才能访问得到,通过(tail -f catalina.out)命令可以查看到tomcat服务器一直处于正在启动中,但并未启动成功。这等耗时------黄花菜都凉了;

下面介绍一种通过maven工具实现不停用服务器部署项目:

工具使用:eclipse,集成在eclipse中的maven插件,阿里云的tomcat服务器;

目标:使用eclipse中的maven插件将web项目部署到远程的tomcat服务器下;

一、首先你应该登录自己的远程服务器,可以使用putty等,然后定位到tomcat下的conf目录,如下图;

通过vim命令(vim tomcat-users.xml)打开,并在下图中的位置添加如下代码:记得修改的username,password的值,后面有用到;最后保存(:wq)退出;

<role rolename="manager-gui" />
<role rolename="manager-script" />
<role rolename="admin"/>
<role rolename="manager"/>
<user username="tomcat" password="tomcat" roles="manager-gui,manager-script,admin,manager" />

 因为修改tomcat中conf文件内容,所以此处需要重启tomcat(./shutdown.sh后./startup.sh),并测试访问自己服务器,例如下图:

出现上面结果说明第一步配置成功;

二、在eclipse中,对自己maven项目中的pom.xml进行配置,加上下面的代码:意思是添加tomcat7插件;

<build>
	<plugins>
		<plugin>
			<groupId>org.apache.tomcat.maven</groupId>
			<artifactId>tomcat7-maven-plugin</artifactId>
			<version>2.2</version>
			<configuration>
				<url>http://自己远程ip地址/manager/text</url>
		            <path>/</path><!--这样配置会覆盖webapps下的root目录,导致的结果就是访问项目的时候只需要ip+端口号,不用项目名-->
                    <port>443</port><!--根据自己tomcat目录中的server.xml中的配置访问端口进行配置,默认是8080,自己修改过的话可能是80,如果做过安全证书,可能是443--> <server>tomcat</server> <username>admin</username><!--刚才第一步中自己设置的username,和password--> <password>123456</password> </configuration> </plugin> </plugins> </build>

三、到目前为止就算配置完成了,接下就是将项目发布到远程服务器了,如下图

接下来,需要填写命令,大致有以下几种状况:

首次发布:clean tomcat7:deploy

跳过测试发布:在后面加 -Dmaven.test.skip=true

覆盖发布,再次发布:clean tomcat7:redeploy

清除发布项目:clean tomcat7:undeploy

最后,点击run,就开始检查和发布项目了,如果结果看到如下图,恭喜你,发布成功了,到自己远程服务器的webapps下看是否存在发布的项目吧

可能会遇到的坑如下:

1、这个是因为在webapps下已经存在了这个项目。无法执行覆盖更新命令,需要执行redeploy命令才可以覆盖更新。或者执行undeploy先卸载存在的项目,然后再执行deploy即可。

这个是我遇到的问题,如果各位有遇到各种问题,欢迎发出来,一起处理一下!!!!

 

posted @ 2019-05-05 23:27  蔓延者  阅读(2577)  评论(0编辑  收藏  举报