maven部署到远程tomcat

使用maven的自动部署功能可以很方便的降maven工程部署到远程tomcat服务器上,节省了大量复制粘贴时间。

首先,配置tomcat的manager

编辑远程tomcat服务器下的conf/tomcat-users.xml,在末尾处去掉注释,并修改或新增manager-gui配置

1
2
3
4
<role rolename="manager-gui"/>
<role rolename="manager-script" />
<!-- 注意在tomcat9中这俩不能同时写在一个用户中,需要分开写user -->
<user username="root" password="password" roles="manager-gui,manager-script"/>

将上面代码中的password修改为自己的密码
保存tomcat-users.xml
在tomcat服务器的conf/Catalina/localhost/目录下创建一个manager.xml文件

1
2
3
4
5
<?xml version="1.0" encoding="UTF-8"?>
<Context privileged="true" antiResourceLocking="false"
docBase="${catalina.home}/webapps/manager">
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
</Context>

保存退出并重启tomcat。

然后在浏览器中输入http:://ip:port/manager/html,此时会弹出要求输入用户名和密码的界面,输入之前配置的账号密码用以确认manager的配置是否正确。正确的结果如下:

在maven中添加配置

在pom.xml文件中,在plugins节点下添加如下plugin节点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>

<configuration>
<url>http://serverip:port/manager/text</url>
<!-- 远程tomcat中tomcat-users.xml中配置manager-script的用户名和密码 -->
<username>admin</username>
<password>password</password>
<update>true</update>
<!-- 项目名 -->
<path>/webapp</path>
</configuration>

</plugin>

然后进行部署,如果是第一次部署,运行mvn tomcat7:deploy进行自动部署(对于tomcat8,9,也是使用tomcat7命令),如果是更新了代码后重新部署更新,运行mvn tomcat7:redeploy,如果第一次部署使用mvn tomcat7:redeploy,则只会执行上传war文件,服务器不会自动解压部署。如果路径在tomcat服务器中已存在并且使用mvn tomcat7:deploy命令的话,上面的配置中一定要配置true,不然会报错。