一、Maven热部署配置
1: 配置Tomcat Manager 用户
重新解压缩了一个新的tomcat7,打开Tomcat根目录下conf目录中的tomcat_user.xml,在《tomcat-users》节点下添加manager角色和用户,用于Tomcat Maven Plugin自动部署应用,xml代码如下:
<tomcat-users>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="alexgaoyh" password="alexgaoyh" roles="manager-gui, manager-script"/> <!-- 用户名和密码可以是其他字合法符串 -->
</tomcat-users>
2: Maven配置中添加Tomcat Server
打开Maven的settings.xml文件,如果是本地安装版Maven,文件为安装根目录下conf/settings.xml,如果使用的是Eclipse内置的Maven,则该文件为当前系统用户目录下的/.m2/setting.xml。在《servers》节点下配置Tomcat的Manager用户信息,xml代码如下:
<servers>
<server>
<id>Tomcat7</id>
<username>alexgaoyh</username>
<password>alexgaoyh</password>
</server>
<servers>
id用于在pom.xml文件中配置该Server,用户名和密码与 tomcat_user.xml中配置相同。
3: 在Maven项目中添加Tomcat Service
打开项目pom.xml文件,在《plugins》节点下添加Tomcat Maven Plugin插件,xml代码如下:
<build>
<finalName>web</finalName>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<url>http://localhost:8080/manager/text</url> <!-- tomcat管理路径 -->
<server>Tomcat7</server> <!-- 与settings.xml文件中Server的id相同 -->
<path>/web</path> <!-- 应用的部署位置 -->
</configuration>
</plugin>
</plugins>
</build>
4:部署到Tomcat7
在project视图中选中项目,右键”Run As”->”Maven bulid”,执行tomcat7:deploy命令,即可完成部署,执行tomcat7:redeploy即可重新部署项目,tomcat7:undeploy卸载部署。
二、错误排除
在Maven与Tomcat配合部署过程中,最常见的错误有三种,折腾了半天,终于找到三种错误产生的原因,以及相应的完美解决办法
1:Connection refused错误
报错信息如下:
[ERROR]Failed to execute goal org.apache.tomcat.maven: tomcat7-maven-plugin: 2.0- SNAPSHOT: deploy (default-cli) on project helloworld: Cannot invoke Tomcat manager: Connection refused: connect -> [Help 1]
原因:未启动Tomcat服务器
解决办法:先启动Tomcat服务器再选择Run
2:401错误
报错信息如下:
[ERROR] Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin: 2.0-SNAPSHOT:deploy (default-cli) on project helloworld: Cannot invoke Tomcat manager: Server returned HTTP response code: 401 for URL: http://localhost:8080/manager/text/deploy?path=%2Fhelloworld -> [Help 1]
原因:权限问题
解决办法在$CATALINA_BASE/conf/tomcat-users.xml,
如D:\apache-tomcat-7.0.34\conf\tomcat-users.xml文件中添加权限
<role rolename="manager-script"/>
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<user username="tomcat" password="root" roles="manager-gui,admin-gui,manager-script"/>
修改pom.xml文件,在 中添加
<username>admin</username>
<password>admin</password>
3:403错误
报错信息如下:
[ERROR] Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin: 2.0-SNAPSHOT:deploy (default-cli) on project helloworld: Cannot invoke Tomcat manager: Server returned HTTP response code: 403 for URL: http://localhost:8080/manager/html/deploy?path=%2Fhelloworld -> [Help 1]
原因:产生该问题有可能因为两个原因,具体参见解决办法
解决办法:
1)如果使用的是Tomcat 7,需要修改pom.xml中部署的url地址,将 <url>http://localhost:8080/manager</url>
改 <url>http://localhost:8080/manager/text</url>
2)给tomcat用户权限分配上,需要同时具备manager-gui和manager-script权限,我在遇到该问题时,就是忘了分配manager-script权限。
正确的conf/tomcat-users.xml配置应为:
复制代码
<tomcat-users>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="admin” password="admin" roles="manager-gui, manager-script"/>
</tomcat-users>