1. 程式人生 > 其它 >intellij idea打包並部署到外部的tomcat

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。我專案的埠好設定的9001。成功訪問。

8、完結散花!

參考:

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

IntelliJ IDEA Sringboot 專案部署到外部Tomcat伺服器 - 南下玩技術 - 部落格園 (cnblogs.com)