以前在项目中使用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 时,鉴权没有通过。