使用maven插件将webapp热部署到远程的tomcat服务器上


 

以前在项目中使用tomcat,都是集成到eclipse中的,需要事前配置好服务器的路径,再创建一个实例出来配置后使用。

前几天尝试使用mvn插件来搞(听说可以自动打包部署),各种百度,还是没搞明白-- 在配置tomat-maven插件都没有配置tomcat的安装路径,怎么就知道要部署在什么地方的呢??

加上我个人的习惯,上来就先把tomcat安装目录下的webapps目录清空了(什么examples,doc的,感觉都是多余的东西),所以也一直没有部署成功!!!

今天注意到mvn控制台日志中有一个奇怪的请求 http://localhost:8080/manager/text/deploy?path=%2Fblank,百度了下才明白:

 tomcat7-maven-plugin 借助了tomcat服务器上的 Tomcat Web Application Manager 服务实现在tomcat自动部署应用,

所以事先要保留 Tomcat Web Application Manager这项服务,运行mvn命令部署前,要确保这个服务时启动着的。

1、Tomcat Web Application Manager

我们下载的 tomcat 中自带了 Tomcat Web Application Manager 应用:

我当前只保留了manager文件夹

运行bin/startup.bat 启动 tomcat后,可以通过在浏览器地址栏输入 localhost:8080/manger 的方式来访问Tomcat Web Application Manager服务。

(1)首先让你输入用户名和密码用以登录。

如果你不知道用户名密码,那就点击cancel,就出现了如下页面:

 没什么好说的,根据提示去配置就好了,配置完成重启一下tomcat。

(2)登陆成功后就看到应用管理页面。后面我们会使用maven插件将自己的项目打包,部署到tomcat上。

2、tomcat7-maven-plugin 插件配置:

<plugin>
    <groupId>org.apache.tomcat.mavengroupId>
    <artifactId>tomcat7-maven-pluginartifactId>
    <version>2.2version>
    <configuration>
        
        <url>http://localhost:8080/manager/texturl>
        <username>adminusername>
        <password>123456password>
        
        
        <path>/abcpath>
        <port>52020port>   

    configuration>
plugin>

其中

1.  <groupId> , <artifactId> , <version> 是tomcat7-maven插件的坐标, <configuration> 设置tomcat服务器的部分信息。都必选。

2.  <url> ,可选,是tomcat服务器中应用管理服务的发布地址,如果不配置,maven插件默认它是http://localhost:8080/manager/text。(所以首先要保证tomcat服务器上部署了manager服务)

3.  <username> , <password>  ,必选,因为tomcat7插件使用Tomcat Web Application Manager来部署我们的app的,所以需要Manager账号密码。

4.  <path> ,可选,待发布服务的根路径,默认是 “ /${project.artifactId} ”

5.  <port> ,可选,前提是在server.xml中配置了相应的端口。

各位一定还见到这种配置方式:

无非就是把登录到 Tomcat Web Application Manager 时的鉴权信息放到了settings.xml中去了。

<plugin>
    <groupId>org.apache.tomcat.mavengroupId>
    <artifactId>tomcat7-maven-pluginartifactId>
    <version>2.2version>
    <configuration>
        
        <url>http://localhost:8080/manager/texturl>
        <server>tomcat777server>        
        
        <path>/abcpath>
        <port>52020port>   

    configuration>
plugin>

3、部署实践

运行 mvn clean tomcat7:deploy,将工程打包并通过Tomcat Web Application Manager 服务部署到tocmat上。

在webapps目录下查看:

在 Tomcat Web Application Manager 页面上查看:

在浏览器中查看:

 4、参考

官方文档(讲Tomcat Web Application Manager 的使用):

https://tomcat.apache.org/tomcat-7.0-doc/manager-howto.html#Deploy_A_New_Application_Archive_(WAR)_Remotely

博客(讲Tomcat Web Application Manager的使用):https://www.jianshu.com/p/f7c639f6df7a

官方文档(讲tomcat-maven插件使用):https://tomcat.apache.org/maven-plugin-2.2/

博客(讲tomcat-maven插件使用,以及常见错误):https://blog.csdn.net/tomcat_2014/article/details/47754941

补充一个:

Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:deploy (default-cli) on project blank: Cannot invoke Tomcat manager: Connection reset by peer: socket write error

可能是因为使用Tomcat Web Application Manager 时,鉴权没有通过。