Maven项目远程部署到Tomcat

概述

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 必选参数

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzwwyz.html