配置tomcat服务器
# %CATALINA%/conf/tomcat-users.xml
# 注意少配置一个role,都可能引起 “Connection reset by peer: socket write error”
# 不过 stackoverflow 上有人推荐不使用 gui
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<user username="admin" password="admin" roles="manager-gui,manager-script,manager-jmx"/>
配置Maven
# %MVN_HOME%/conf/settings.xml
<server>
<id>LOCAL</id>
<username>admin</username>
<password>admin</password>
</server>
配置 pom.xml
# 打包, war 去掉版本号
<finalName>${project.artifactId}</finalName>
# 配置 Tomcat 插件
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<url>http://localhost/manager/text</url>
<uriEncoding>${project.build.sourceEncoding}</uriEncoding>
<!-- 与 Maven 中配置的 server.id 对应
<server>LOCAL</server>
<!-- 解决 Connection reset by peer: socket write error -->
<update>true</update>
</configuration>
</plugin>
运行 mvn 命令
mvn clean tomcat7:redeploy -Dmaven.test.skip=true
# 注意 tomcat7 不是 tomcat
有时为了防止WEB-INF/lib 下的文件被锁,无法删除:
在context.xml的context元素上设置antiResourceLocking=true
更新:如果线上同时部署多台tomcat:
在 pom.xml 中配置 <profiles> (相当于参数配置):
<profile>
<id>online</id>
<properties>
<deploy.server>ONLINE</deploy.server>
<deploy.url>http://IP/manager/text</deploy.url>
</properties>
</profile>
修改 tomcat.plugin :
...
<url>${deploy.url}</url>
<server>${deploy.server}</server>
...
并执行命令:
# -P 用于指定所使用的 profile
mvn tomcat7:redeploy -Dmaven.test.skip=true -Ponline