在使用eclipse做javaee开发的时候,我们通常是在eclipse中建立一个tomcat,然后将项目部署到tomcat下,如果部署到远程,我们需要手动将war包部署到远程服务器的tomcat/webapps目录下,tomcat7-maven-plugin插件让我们可以对maven构建的webapp直接部署到远程服务器,而且无需重启tomcat,这里既可以部署到tomcat7,通过同样的方式,也可以部署到tomcat8上,下面介绍部署过程。
部署过程:
0、部署的前提是有maven web项目,这里略过。
1、设置tomcat8管理用户名和密码。
在tomcat安装目录下conf下的tomcat-users.xml配置文件的tomcat-users节点下新增如下配置。
<role rolename="admin-gui"/> <role rolename="manager-gui"/> <role rolename="manager-jmx"/> <role rolename="manager-script"/> <role rolename="manager-status"/> <user username="admin" password="123456" roles="admin-gui,manager-gui,manager-jmx,manager-script,manager-status"/>
tomcat管理员需要管理app,所需的权限都在这里面。如果后面部署出现403权限问题,基本就是这里的配置有问题。
2、配置部署插件。
这里需要配置远程服务器manager app的地址。然后就是登陆管理界面的用户名和密码。
3、maven build。
项目右键->Run As->Run Configurations。
在配置页面左侧,选择Maven Build并新建一个配置 launch configuration,指定项目位置,在Goals处输入compile tomcat7:deploy。如下图所示:
如果是第二次部署,可以将Goals改为 compile tomcat7:redeploy。
选择Run,然后等待部署,第一次会从仓库下载依赖jar包。会比较慢,部署成功,会打印如下信息:
[INFO] Processing war project [INFO] Copying webapp resources [E:\workspace\web-parent\web-controller\src\main\webapp] [INFO] Webapp assembled in [58 msecs] [INFO] Building war: E:\workspace\web-parent\web-controller\target\web-controller.war [INFO] WEB-INF\web.xml already added, skipping [INFO] [INFO] <<< tomcat7-maven-plugin:2.2:deploy (default-cli) < package @ web-controller <<< [INFO] [INFO] --- tomcat7-maven-plugin:2.2:deploy (default-cli) @ web-controller --- [INFO] Deploying war to http://10.119.9.149:8080/web-controller Uploading: http://10.119.9.149:8080/manager/text/deploy?path=%2Fweb-controller Uploaded: http://10.119.9.149:8080/manager/text/deploy?path=%2Fweb-controller (95 KB at 2309.1 KB/sec) [INFO] tomcatManager status code:200, ReasonPhrase:OK [INFO] OK - Deployed application at context path /web-controller [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2.400 s [INFO] Finished at: 2018-06-28T16:22:26+08:00 [INFO] Final Memory: 16M/260M [INFO] ------------------------------------------------------------------------
tomcat8服务器部署日志:
28-Jun-2018 16:22:18.976 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"] 28-Jun-2018 16:22:18.983 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"] 28-Jun-2018 16:22:18.987 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 611 ms 28-Jun-2018 16:23:31.596 INFO [http-nio-8080-exec-1] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive /home/hadoop/software/tomcat8/webapps/web-controller.war 28-Jun-2018 16:23:31.628 INFO [http-nio-8080-exec-1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. 28-Jun-2018 16:23:31.630 INFO [http-nio-8080-exec-1] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive /home/hadoop/software/tomcat8/webapps/web-controller.war has finished in 34 ms
tomcat8 webapps目录下新增加的web-controller.war以及部署成功之后的web-controller文件夹。
4、访问部署的项目首页。
访问项目地址http://10.119.9.149/web-controller/,会出现helloworld。
5、部署注意事项:
有可能在部署的时候出现:403 Access Denied,回顾第一步和第二步配置,tomcat需要配置用户名,密码,用户角色,另外pom.xml配置文件也需要做配置。
说说这种部署:通常,我们部署项目到远程服务器,甚至生产环境服务器,都是需要登录到远程服务器,这时候的用户名和密码不是tomcat的用户名和密码,而是相对隐私的东西,我们如果越过这层方式部署,会存在一定的风险。一个开发组里面,谁都可以这么部署,但是通过登录服务器的方式,每个人都有自己的账号,或者很少人有账号,会降低不少风险。