在Maven中使用Tomcat组件能够方便我们对web项目的调试,Maven中Tomcat组件有两个版本,一个是Tomcat,一个是Tomcat7,下面我们以tomcat7为例演示它的配置过程:
1. Tomcat 认证:添加用户
为Tomcat添加具有角色管理器GUI和管理脚本的用户,作用是让Maven具有在Tomcat下发布项目,移除项目等操作权限。
在Tomcat的conf目录下的tomcat-users.xml中添加:
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="admin" password="password" roles="manager-gui,manager-script" />
</tomcat-users>
在浏览器中打开http://localhost:8080/manager,出现身份验证的界面,输入刚才添加的用户名和密码:
如果登录后显示如下界面,则Tomcat添加用户成功。
2. Maven 认证:添加server节点
在Maven的settings.xml文件中添加之前创建的Tomcat用户,之后Maven使用此用户来登录Tomcat服务器。
<?xml version="1.0" encoding="UTF-8"?>
<settings ...>
<servers>
<server>
<id>tomcat7</id>
<username>admin</username>
<password>password</password>
</server>
</servers>
</settings>
3. 添加Tomcat7 Maven 插件
在Maven项目的pom.xml中添加Tomcat7插件:
<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>
<server>tomcat7</server>
<port>8080</port>
<path>/springmvc</path>
</configuration>
</plugin>
</plugins>
这里需要注意:
- server是Tomcat服务器名称,要与settings.xml中添加的server节点名称一致。
- path是访问应用的路径。(一般是写成自己的项目名,我使用的项目名称springmvc)
- url是Tomcat管理页路径。
- port指定端口。
4. 原理
在部署期间,它告诉Maven通过“/ springmvc”路径上的“http:// localhost:8080 / manager / text”将WAR文件部署到Tomcat服务器,使用的是“tomcat7”(在settings.xml中)的用户名和密码认证。
5. 部署项目
Eclipse中右键Maven项目->Run As->Maven Build:
使用tomcat7:deploy
命令进行部署(重新部署是:tomcat7:redeploy
):
补充
如果觉得这样配置有些麻烦,那我们还有一种比较简便的方法:在Tomcat中添加完用户后,不在settings.xml中配置server节点,而是直接将节点配置在Maven项目的pom.xml中,如下:在configuration中将username跟password添加上即可:
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<url>http://localhost:8080/manager/text</url>
<server>tomcat7</server>
<username>admin</username>
<password>password</password>
<port>8080</port>
<path>/springmvc</path>
</configuration>
</plugin>
然后进行项目部署即可。
如果你在部署过程中tomcat组件报错,那么可以参考这篇文章Maven使用Tomcat组件出现错误的解决方案进行排错。