图文详解|Maven插件一键热部署项目至tomcat

-------------2018-11-23------------------
因Maven热部署碰到一个极大的问题,部署在服务器后使用热部署会删除原有的整个目录再重新部署。
最近测试发布,但是ftp服务器当时做这个没建所以文件目录直接放到了项目目录下 ,热部署的时候导致上传的文件全部丢失。幸亏该问题是在 测试阶段发现的,血的教训,和mysql使用弱密码被攻击一样都要记住。。

热部署是什么

热部署就是在修改了jsp页面及java类的情况下不需重启服务器即可让修改的内容生效,当然,如果修改了配置文件还是需要进行重启的。

为什么要用热部署

在开发时,如果我们每修改一次类文件或者页面就需要对项目进行重启,也许你测试的时候只用改一个小地方只不过花费几秒钟,而重启tomcat却需要花费数十秒,一次两次,多次之后这其中节约的时间就不是一点点了。
具统计,热部署能节约超过20%以上的开发时间,大大提高了开发效率。

Maven热部署tomcat

原理

我们运行tomcat的时候都会进入tomcat的主页面,但有没有深入了解过这个主页面其中的功能或者这个主页面是用来做什么的?其实tomcat主页面开放了一个项目其中是有部署项目的方法。在那之上进行项目的部署是不需要重启服务器的,换句话说,重启了服务器还怎么通过tomcat进行项目部署。
tomcat自带的管理项目功能页面:
这里写图片描述
这个页面是需要通过tomcat的授权账号登录的。
登录成功后的页面:
这里写图片描述
很容易看到底部是有一个上传war的方法,通过这个接口就能很轻易地将项目部署至服务器。

实现

(1)tomcat授权账号

进入tomcat目录下的conf打开tomcat-user.xml配置文件
Linux下文件一致
这里写图片描述
打开后把所有注释包括tomcat-users里面的注释全都去掉其实配置文件里就这么几句话

<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <user username="tomcat" password="<must-be-changed>" roles="tomcat"/>
  <user username="both" password="<must-be-changed>" roles="tomcat,role1"/>
  <user username="role1" password="<must-be-changed>" roles="role1"/>
</tomcat-users>

然后我们在中间添加几句话

<tomcat-users>
<role rolename="tomcat"/>
<role rolename="role1"/>

<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<role rolename="manager-jmx"/>
<role rolename="manager-script"/>
<user username="登录的账号" password="登录的密码" roles="admin-gui,manager-gui,manager-script,manager-jmx"/>

<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="role1" password="tomcat" roles="role1"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
</tomcat-users>

保存,重启tomcat

登录tomcat主页
这里写图片描述
输入账号密码进入则成功。

(2)maven安装插件
进入项目所在pom,安装以下插件
这里写图片描述
代码如下:

 <build>
        <finalName>xxx</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <uriEncoding>UTF-8</uriEncoding>
                    <url>http://xx.xx.xx.xx:8080/manager/text</url>
                    <path>/${project.build.finalName}</path>
                    <!--<server>tomcat7</server>-->
                    <username>xxx</username>
                    <password>xxx</password>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <packaging>war</packaging>

导入maven的jar包即可。
账号密码处也可通过配置maven的setting中的server属性。
二则取一皆可。

(3)实现一键部署tomcat项目
此处在idea中可以通过右侧自带maven插件完成:
这里写图片描述
第一次部署使用deploy,如果项目已经在了使用redeploy。

Eclipse中大致是使用run in Maven 键入 tomcat7:deploy/tomcat7:redeploy
执行即可。
然后登陆先前的tomcat管理界面能够看到项目就代表项目已经成功部署。

后记

当我们对项目进行修改的时候,如果要成功热部署,一定要先重新编译项目。
再使用redeploy提交至服务器。
这样就能达到无需重启tomcat服务器而成功完成修改。
另:jrebel插件也同样能实现项目的热部署,后续我会尝试一下。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值