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即可。
这个是我遇到的问题,如果各位有遇到各种问题,欢迎发出来,一起处理一下!!!!