intellij idea打包并部署到外部的tomcat

一、将项目打包成war格式,修改pom.xml

1、在其中添加下列代码

<packaging>war</packaging>

2、检查是否有这两个插件, maven-war-plugin 和 spring-boot-maven-plugin

  <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.3.1</version>
            </plugin>
        </plugins>
<!--        打包成的项目名-->
        <finalName>tomcattest</finalName>
    </build>

3、点击右侧的package打包成 war 包,在项目的target目录可以看到生成的war包

4、打开cmd,到war 包所在目录 运行命令,项目可以正常启动并能成功访问。

java -jar  tomcattest.war

 

5.发布到外部的tomcat

  把tomcattest.war放到tomcat下的webapp下,重启tomcat,再次访问发现访问不到,报404错误。

 6、解决当前这个在外部tomcat没办法运行起来并访问的问题,方法是修改启动类。

  让项目启动类SpringBootStartApplication 继承自 SpringBootServletInitializer

    说明:

     A.在外部容器部署的话,不能依赖于Application的main函数

       B.在启动类中继承SpringBootServletInitializer并实现configure方法,以类似于web.xml文件配置的方式来启动Spring应用上下文

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication
public class TomcattestApplication extends SpringBootServletInitializer {
    @Override
    public SpringApplicationBuilder configure(SpringApplicationBuilder applicationBuilder) {
        return applicationBuilder.sources(TomcattestApplication.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(TomcattestApplication.class, args);
    }

}

7、再次打包发布到外部的tomcat。直接访问:localhost:8080/test,即:ip:端口/项目名称,这里的端口是外部tomcat配置的端口,项目名称是war包的名称,

一定注意这里访问的端口是8080,也就是外部tomcat设置的端口。而不是项目,application.yml中配置的server.port。

 8、完结散花!

参考:

https://blog.csdn.net/weixin_34067102/article/details/86003918

IntelliJ IDEA Sringboot 项目部署到外部Tomcat服务器 - 南下玩技术 - 博客园 (cnblogs.com)

原文地址:https://www.cnblogs.com/dragon-lan/p/15209541.html