目录
一, Tomcat 插件支持的目标
二, 系统要求及插件引入
2.1 系统要求
2.2 引入插件
三, 远程部署 war 到 tomcat
3.1 添加 tomcat 管理角色
3.2 本地 Maven 设置 Server
3.3 项目配置 Tomcat 插件
3.4 插件参数说明
3.4.1 必选参数
3.4.2 可选参数
3.5 运行结果
四, 远程 undeploy
概述
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 包,这允许使 < br ztid="101" ow="0" oh="0">用类似'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 目 < br ztid="114" ow="0" oh="0"> 标加上 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>http://{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 必选参数
以下参数必选, 但是可以在 pom 中空缺, 空缺时将采用默认值
名称 | 描述 | 默认值 |
---|---|---|
charset | 在与 Tomcat Manager 通信是的 URL 编 < br ztid="191" ow="0" oh="0"> 码字符集 | ISO-8859-1 |
mode | 部署的模式,值可为:war,context,both | war |
path | 应用程序运行的上下文路径,必须以'/'开始 | /${project.artifactId} |
update | 当部署已存在的应用时,是否自动 < br ztid="204" ow="0" oh="0">undeploy 该应用 | false |
url | Tomcat Manager 实例使用的全路径 | http://localhost:8080/
|
warFile | 部署 warFile 的路径 | ${project.build.directory} /${project.build.finalName}.war |
3.4.2 可选参数
对于个性化的需求, tomcat7 插件提供了可配置的参数
名称 | 描述 |
---|---|
contextFile | Tomcat 的 context 的 XML 路径,对于 mode=war 不适用,默认为 < br ztid="228" ow="0" oh="0">${project.build.directory}/${project.build.finalName}/ META-INF/context.xml |
ignorePackaging | 如果设置为 true,忽略类型不是 war 的项目 |
username | 部署到 Tomcat 的 username |
password | 部署到 Tomcat 的 password |
server | 指定 Maven 的 setting.xml 中配置的 server id 用于 Tomcat 认证 |
tag | 应用程序在 Tomcat 中使用的标签的名字 |
3.5 运行结果
调用: mvn tomcat7:deploy 命令得到下图:
成功快速部署到 tomcat 中
四, 远程 undeploy
此外, 如果快速卸载 (undeploy)Tomcat 服务器的项目, 使用:
mvn tomcat7:undeploy
效果如下:
来源: https://www.cnblogs.com/letcafe/p/Tomcat2Maven.html