Maven添加Tomcat插件实现热部署代码实例

作者:Chsoul'S Blog 时间:2021-12-09 02:03:49 

Maven热部署,顾名思义就是可以不影响项目在服务器中的运行情况,可以实现项目代码的更新,减少启动,编译时间,达到快速开发的目的,也不需要手动拷贝war包到远程项目,可以直接将项目以及war包部署到远程服务器。 实现Maven热部署主要需要maven获得tomcat的管理权限,首先要进行Tomcat的配置,其次在pom.xml中配置tomcat插件即可实现maven热部署。

配置Tomcat权限

在tomcat文件目录下找到apache-tomcat-7.0.68/conf/tomcat-users.xml文件,在文中位置加入以下角色(非注释部分)配置:


<tomcat-users>
<!--
NOTE: By default, no user is included in the "manager-gui" role required
to operate the "/manager/html" web application. If you wish to use this app,
you must define such a user - the username and password are arbitrary.
-->
<!--
NOTE: The sample user and role entries below are wrapped in a comment
and thus are ignored when reading this file. Do not forget to remove
<!.. ..> that surrounds them.
-->
<!--
<role rolename="tomcat"/>
<role rolename="role1"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="role1" password="tomcat" roles="role1"/>
-->
<role rolename="manager-gui" />
<role rolename="manager-script" />
<user username="tomcat" password="tomcat" roles="manager-gui,manager-script" />
</tomcat-users>

配置说明

manager-gui:允许访问html接口(即URL路径为/manager/html/)
manager-script:允许访问纯文本接口(即URL路径为/manager/text/)
manager-jmx:允许访问JMX代理接口(即URL路径为/manager/jmxproxy/)
manager-status:允许访问Tomcat只读状态页面(即URL路径为/manager/status/)

从Tomcat Manager内部配置文件中可以得知,manager-gui、manager-script、manager-jmx均具备manager-status的权限,也就是说,manager-gui、manager-script、manager-jmx三种角色权限无需再额外添加manager-status权限,即可直接访问路径"/manager/status/*"

maven配置


<server>
 <id>tomcat7</id><!--Id名称可以随便写-->
 <username>tomcat</username><!--用户名与tomcat配置中username相同-->
 <password>tomcat</password><!--密码与tomcat配置中password相同-->
</server>

pom.xml引入tomcat7插件

maven中关于tomcat的插件有tomcat6插件和tomcat7插件,普遍使用的是tomcat7插件,在pom.xml中添加以下片段:


<plugins>
<plugin>
   <groupId>org.apache.tomcat.maven</groupId>
   <artifactId>tomcat7-maven-plugin</artifactId>
   <version>2.2</version>
   <configuration>
   <!--要部署的远程服务器地址 ip端口,后面/manager/text为tomcat管理项目的路径不能改变-->
   <url>http://localhost:8080/manager/text</url>
   <!--maven setting.xml中配置的serverID名称-->
   <server>tomcat7</server>
   <!--项目要部署的路径 /表示根路径 默认Root-->
   <path>/</path>
   <!--项目是否更新 默认true 可不配置-->
   <update>true</update>
   <!--maven setting.xml以及tomcat tomcat-users.xml 中配置的用户名密码-->
   <username>tomcat</username>
   <password>tomcat</password>
   </configuration>
</plugin>    
<!--以下配置不是必须,为了保证编译版本,tomcat7插件默认支持的JDK1.7-->
 <plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-compiler-plugin</artifactId>
   <version>3.8.0</version>
   <configuration>
   <source>1.7</source>
   <target>1.7</target>
   <encoding>UTF-8</encoding>
   </configuration>
 </plugin>
</plugins>

配置完成,接下来运行run as maven build,然后在Goals中填上tomcat7:deploy运行项目,实现maven热部署了,看到以下信息提示,就表示执行成功了。

[INFO] tomcatManager status code:200, ReasonPhrase:OK
[INFO] OK - Deployed application at context path /
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.560 s
[INFO] Finished at: 2019-04-18T20:37:57+08:00
[INFO] Final Memory: 21M/222M
[INFO] ------------------------------------------------------------------------

注意事项:

部署项目前要先启动tomcat服务器

在执行tomcat7:deploy命令时注意jre版本的配置,JDK版本选择1.7

首次执行选择第一个maven build,非首次执行选择第二个maven build 命令执行tomcat7:redeploy

maven集成tomcat常用命令:

tomcat:deploy 部署一个web war包
tomcat:reload 重新加载web war包
tomcat:start 启动
tomcat tomcat:stop 停止
tomcat tomcat:undeploy 停止一个war包
tomcat:run 启动嵌入式tomcat ,并运行当前项目

来源:https://www.cnblogs.com/conly/p/12058345.html

标签:Maven,Tomcat,插件,部署,热
0
投稿

猜你喜欢

  • java 用itext设置pdf纸张大小操作

    2022-10-09 15:00:43
  • java信号量控制线程打印顺序的示例分享

    2023-05-09 12:27:38
  • Java使用fill()数组填充的实现

    2022-02-06 15:03:33
  • SpringBoot项目创建使用+配置文件+日志文件详解

    2023-11-20 12:49:43
  • C#利用FileSystemWatcher实时监控文件的增加,修改,重命名和删除

    2021-08-21 05:46:28
  • Spring Security内置过滤器的维护方法

    2022-07-30 18:10:16
  • 详解java.lang.reflect.Modifier.isInterface()方法

    2023-07-27 18:25:25
  • java Hibernate多对多映射详解及实例代码

    2023-07-02 07:24:40
  • Java中常见的查找算法与排序算法总结

    2021-07-14 13:21:23
  • Java 中 synchronized的用法详解(四种用法)

    2022-03-11 08:55:05
  • Java解析Excel内容的方法

    2023-03-20 20:36:26
  • Spring实现处理跨域请求代码详解

    2023-11-25 12:28:34
  • PageHelper插件实现一对多查询时的分页问题

    2021-11-05 07:02:34
  • SpringBoot整合dataworks的实现过程

    2023-11-29 12:13:09
  • 使用java实现BBS论坛发送邮件过程详解

    2022-12-19 16:58:30
  • java中利用List的subList方法实现对List分页(简单易学)

    2022-06-18 23:33:09
  • JFreeChart插件实现的折线图效果实例

    2023-09-21 02:20:03
  • JAVA得到数组中最大值和最小值的简单实例

    2023-03-18 01:19:39
  • Java字符串技巧之删除标点或最后字符的方法

    2023-02-06 21:42:50
  • Spring Cache手动清理Redis缓存

    2023-11-29 02:49:52
  • asp之家 软件编程 m.aspxhome.com