Maven发布项目到tomcat

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文件,添加管理员信息,修改如下


  
  
  

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

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

2、修改settings

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


    
        tomcat9
        java
        jdk
    

3、在Maven工程中加入插件

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


    pytest
    
        
            org.apache.tomcat.maven
            tomcat7-maven-plugin
            2.2
            
                
                tomcat9
                true
            
        
    
    

在写这篇文档时,也有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,默认限定为仅允许本机访问


改为


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

2、配置远程路径

修改项目pom.xml文件


    
        org.apache.tomcat.maven
        tomcat7-maven-plugin
        2.2
        
            http://{远程IP}:8080/manager/text
            tomcat9
            true
        
    

3、执行部署

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

mvn tomcat7:redeploy

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

三、附录

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

mvn tomcat7:{goal}

goal取值可参考

  • 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服务器中,取消部署某一个项目

参考: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中使用的标签的名字

你可能感兴趣的:(Maven发布项目到tomcat)