概述
Maven本身不提供任何插件将war包发布到远程站点,例如Tomcat这样类似的Servlet容器,但是,Apache Tomcat本身提供了一个Maven插件:
<dependency> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.1</version> </dependency>tomcat7-maven-plugin是很久以前的插件版本,默认支持到Tomcat7,但是对于目前最新的Tomcat9同样可以使用该插件(虽然插件的ArtifactId的名字为tomcat7很奇怪)
插件介绍的官网文档为:
一、Tomcat插件支持的目标默认使用的Tomcat7插件支持多种目标,
调用格式如下:
mvn tomcat7:[goal]例如,远程部署一个项目到Tomcat容器:
mvn tomcat7:deploy文档如下:
目标 描述deploy 部署war包到Tomcat中
deploy-only 不经过package阶段,直接将包部署到Tomcat中(传输现成的)
exec-war 创建一个包含必要Apache Tomcat类库的自可执行jar包,这允许使
用类似\'jar -jar mywebapp.jar\'直接运行APP而不需要Tomcat实例
exec-war-only 同上exec-war,但是不使用package阶段
help 展示所有的帮助信息
redeploy 重新部署war包到Tomcat(等同于deploy目标加上update=true参数)
redeploy-only 重新部署war包到Tomcat但是不经过package阶段(等同于deploy目
标加上update=true参数)
run 将当前项目作为动态web程序(exploded),使用嵌入的Tomcat服务器运行
run-war 将当前项目作为打包后的war(war),使用嵌入的Tomcat服务器运行
run-war-only 同run-war,但是不使用package阶段
shutdown 关闭所有已经开始的嵌入式Tomcat服务器
standalone-war 创建嵌入Tomcat的可执行war,并且可以在别的地方部署
standalone-war-only 同standalone-war但是不使用package阶段
undeploy 从Tomcat服务器中,取消部署某一个项目
二、系统要求及插件引入 2.1 系统要求
要求如下:
组件 Maven JDK 内存 硬盘要求 2.0+ 1.5+ 无要求 无要求
2.2 引入插件
引入方式:
<project> ... <build> <!-- 在POM中或父POM中使用这样的插件(IDEA会出现对应的插件栏) --> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.1</version> </plugin> ... </plugins> </build> ... </project> 三、远程部署war到tomcat命令格式:
mvn tomcat7:deploy 3.1 添加tomcat管理角色修改tomcat的用户配置文件
%TOMCAT_HOME%/conf/tomcat-users.xml,添加一个用户:
<?xml version="1.0" encoding="UTF-8"?> <tomcat-users xmlns="http://tomcat.apache.org/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd" version="1.0"> <role rolename="manager-gui" /> <role rolename="manager-script"/> <user username="username" password="password" roles="manager-gui,manager-script"/> </tomcat-users>注意!可以给该用户添加多个角色,为了远程部署,至少需要这个角色:
manager-script
当然,也可以开启manager-gui用于可视化管理
3.2 本地Maven设置Server为了让本地发布的Maven可以找到对应的服务器并完成鉴权
需要修改settings.xml,并添加服务器,这里的账号、密码需要和部署的tomcat服务器配置的一致:
<servers> <server> <id>tomcatServer</id> <username>username</username> <password>password</password> </server> </servers> 3.3 项目配置Tomcat插件 <build> <!-- 在POM中或父POM中使用这样的插件(IDEA会出现对应的插件栏) --> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <url>{yourIP}:8080/manager/text</url> <server>tomcatServer</server> <update>true</update> <path>/${project.artifactId}</path> </configuration> </plugin> ... </plugins> </build>此处指定了插件所使用的切记需要一致(setting.xml和pom.xml)
3.4 插件参数说明tomcat7-maven-plugin为每个目标提供了多个参数,每个目标可以有相关的配置,具体说明可参考官方文档:
3.4.1 必选参数