Tomcat Maven 插件

在 Maven 项目中,可以使用 Tomcat Maven 插件tomcat7-maven-plugintomcat-maven-plugin)来直接部署 WAR 文件到 Tomcat 服务器,而无需手动复制 WAR 文件到 webapps 目录。以下是详细的使用方法:


1. 配置 Tomcat Maven 插件

pom.xml 部分添加以下配置:

使用 tomcat7-maven-plugin(Tomcat 7+)

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.tomcat.mavengroupId>
            <artifactId>tomcat7-maven-pluginartifactId>
            <version>2.2version>
            <configuration>
                
                <url>http://localhost:8080/manager/texturl>
                
                <server>tomcat-adminserver>
                
                <path>/myapppath>
                
                <username>adminusername>
                <password>adminpassword>
            configuration>
        plugin>
    plugins>
build>

使用 tomcat-maven-plugin(Tomcat 6,较旧)

<plugin>
    <groupId>org.codehaus.mojogroupId>
    <artifactId>tomcat-maven-pluginartifactId>
    <version>1.1version>
    <configuration>
        <url>http://localhost:8080/manager/htmlurl>
        <server>tomcat-adminserver>
        <path>/myapppath>
    configuration>
plugin>

2. 配置 Tomcat 管理用户

Tomcat 需要启用 Manager App 并配置用户权限才能通过 Maven 插件部署。

修改 conf/tomcat-users.xml

<tomcat-users>
    <role rolename="manager-script"/>  
    <role rolename="manager-gui"/>     
    <user username="admin" password="admin" roles="manager-script,manager-gui"/>
tomcat-users>
  • 重启 Tomcat 使配置生效:
    ./bin/shutdown.sh && ./bin/startup.sh
    

3. 在 Maven settings.xml 中配置凭据(可选)

为了避免在 pom.xml 中明文存储密码,可以在 ~/.m2/settings.xml 中配置:

<settings>
    <servers>
        <server>
            <id>tomcat-adminid>  
            <username>adminusername>
            <password>adminpassword>
        server>
    servers>
settings>

4. 使用 Maven 命令部署

(1) 部署 WAR 文件

mvn tomcat7:deploy
  • 首次部署:将 WAR 文件上传到 Tomcat 的 webapps/ 目录并自动启动应用。
  • 访问应用http://localhost:8080/myapp

(2) 重新部署(更新代码后)

mvn tomcat7:redeploy
  • 适用于代码修改后重新发布。

(3) 启动/停止应用

mvn tomcat7:start     # 启动应用
mvn tomcat7:stop      # 停止应用
mvn tomcat7:undeploy  # 彻底删除应用

5. 常见问题及解决

问题 1:403 Access Denied

  • 原因:Tomcat 管理用户未正确配置或权限不足。
  • 解决
    1. 检查 tomcat-users.xml 是否包含 manager-script 角色。
    2. 确保 settings.xmlpom.xml 中的用户名/密码正确。

问题 2:Connection Refused

  • 原因:Tomcat 未运行或 Manager App 未启用。
  • 解决
    1. 启动 Tomcat:
      ./bin/startup.sh
      
    2. 确保 manager 应用存在于 webapps/ 目录。

问题 3:NoSuchMethodError(版本冲突)

  • 原因:插件版本与 Tomcat 版本不兼容。
  • 解决
    • Tomcat 7/8 使用 tomcat7-maven-plugin
    • Tomcat 9/10 可尝试 tomcat10-maven-plugin(社区维护版本)。

6. 高级配置

(1) 跳过测试

mvn tomcat7:deploy -DskipTests

(2) 指定环境(Profile)

pom.xml 中定义不同环境的配置:

<profiles>
    <profile>
        <id>prodid>
        <properties>
            <tomcat.url>http://prod-server:8080/manager/texttomcat.url>
        properties>
    profile>
profiles>

运行命令时激活 Profile:

mvn tomcat7:deploy -Pprod

(3) 自定义 WAR 文件名

<build>
    <finalName>myappfinalName>  
build>

总结

操作 命令 说明
首次部署 mvn tomcat7:deploy 上传 WAR 并启动
重新部署 mvn tomcat7:redeploy 更新代码后重新发布
停止应用 mvn tomcat7:stop 停止应用(不删除)
彻底删除 mvn tomcat7:undeploy 从 Tomcat 移除应用
调试连接问题 mvn -X tomcat7:deploy 显示详细日志

通过 Tomcat Maven 插件,可以实现 一键部署,特别适合持续集成(CI/CD)流程。

你可能感兴趣的:(tomcat,maven,java)