Maven

Maven发布项目到tomcat

2021-08-27  本文已影响0人  zhouf_cq

Maven发布项目到tomcat

本文介绍如何通过Maven将项目发布到tomcat服务器中,包含发布到本地机和远程服务器
本文环境
apache-tomcat-9.0.30
Apache Maven 3.8.2
java version "1.8.0_301"

一、发布到本机

如果tomcat服务器在本机,可通过如下方式发布

1、添加Tomcat用户

修改conf/tomcat-users.xml文件,添加管理员信息,修改如下

<tomcat-users version="1.0" 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">
  <role rolename="admin-gui"/>
  <role rolename="manager-script"/>
  <user password="jdk" roles="admin-gui,manager-gui,manager-script" username="java"/>
</tomcat-users>

一个用户可以配置多个角色,远程部署需要的角色为manager-script

启动Tomcat服务,测试用户是否可登录Tomcat管理界面

2、修改settings

修改Maven的配置文件settings.xml文件,在<servers>部分添加服务器账号信息,此账号可用于登录Tomcat服务器,与Tomcat中的配置相匹配

<servers>
    <server>
        <id>tomcat9</id>
        <username>java</username>
        <password>jdk</password>
    </server>
</servers>

3、在Maven工程中加入插件

修改pom.xml文件,加入tomcat7-maven-plugin插件配置

<build>
    <finalName>pytest</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.2</version>
            <configuration>
                <!-- 此处server配置与settings中的server,id 相关 -->
                <server>tomcat9</server>
                <update>true</update>
            </configuration>
        </plugin>
    </plugins>
  </build>  

在写这篇文档时,也有tomcat8-maven-plugin以及tomcat9-maven-plugin插件,只是这两款插件在使用命令时不能使用简写方式,完整的写法也没能调用成功,未继续尝试。
tomcat7-maven-plugin是这款插件的名称,个人觉得不一定要和Tomcat版本一致,能实现部署的功能就好

4、执行发布

在Tomcat处理运行状态下,可使用如下Maven命令部署应用到服务器中

mvn tomcat7:deploy

如果修改了代码需要重新发布,可使用

mvn tomcat7:redeploy

二、发布到远程

1、允许Tomcat远程管理

修改文件webapps/manager/META-INF/context.xml,默认限定为仅允许本机访问

<Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />

改为

<Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="\d+\.\d+\.\d+\.\d+" />

如果需要限定远程某地址访问,可修改allow内容

2、配置远程路径

修改项目pom.xml文件

<plugins>
    <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version>
        <configuration>
            <url>http://{远程IP}:8080/manager/text</url>
            <server>tomcat9</server>
            <update>true</update>
        </configuration>
    </plugin>
</plugins>

3、执行部署

在远程Tomcat启动状态执行命令

mvn tomcat7:redeploy

即可发布应用到远程服务器

三、附录

1、tomcat7插件的调用格式如下

mvn tomcat7:{goal}

goal取值可参考

参考:http://tomcat.apache.org/maven-plugin-2.1/tomcat7-maven-plugin/plugin-info.html

2、插件参数配置

其中无默认值的参数为可选参数

名称 描述 默认值
charset 在与Tomcat Manager通信是的URL编码字符集 ISO-8859-1
mode 部署的模式,值可为:war,context,both war
path 应用程序运行的上下文路径,必须以'/'开始 /${project.artifactId}
update 当部署已存在的应用时,是否自动undeploy该应用 false
url Tomcat Manager实例使用的全路径 http://localhost:8080/manager/text
warFile 部署warFile的路径 ${project.build.directory}/${project.build.finalName}.war
contextFile Tomcat的context的XML路径,对于mode=war不适用,默认为${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中使用的标签的名字
上一篇 下一篇

猜你喜欢

热点阅读