IDEA下spring boot项目打包war包部署外部tomcat问题

时间:2021-02-12 09:40:10

最近需要把开发的spring boot项目打包部署到云服务器上,自己先把项目部署到本地的tomcat上运行,结果发现怎么部署都会报错。现在特别整理了所有部署流程。以帮助大家解决问题。

前提是你得保证你得spring boot项目在idea上能跑起来,并且访问到服务器,下面直接重点。

第一步,修改配置pom.xml文件

 <packaging>war</packaging> <!-- 网上有些说把war改成jar,个人尝试过,这个不用改 -->
 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>

            <!-- 移除嵌入式tomcat插件 -->
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- 移除之后会报错,加入下面的依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
             <scope>provided</scope>
        </dependency>
 <build>
        <finalName>wxxm</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <fork>true</fork>
                    <mainClass>com.sc.wxxm.WxxmApplication</mainClass><!-- 项目运行main方法的全路径 -->
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>

            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>

            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.7.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                    <compilerArguments>
                        <extdirs>${project.basedir}/src/main/resources/lib</extdirs><!-- maven无法导入的依赖,我自己建的lib包 -->
                    </compilerArguments>
                </configuration>
            </plugin>

        </plugins>
        <resources>
            <resource>
                <directory>${basedir}/src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>${basedir}/src/main/resources</directory>
                <includes>
                    <include>**/**</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>

第二步,修改启动类,启动类继承SpringBootServletInitializer类,重写configure方法

@SpringBootApplication
@EnableAutoConfiguration

public class WxxmApplication  extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(WxxmApplication.class);
    }

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


   
}

第三步,使用 idea下的命令行操作打包xxxx.war,输入命令 mvn clean package 
    IDEA下spring boot项目打包war包部署外部tomcat问题

出现以下内容 打包完成

IDEA下spring boot项目打包war包部署外部tomcat问题
第四步,在本地打开tomcat下的webapps,将war包复制到该文件夹下,进入tomcat/bin目录打开命令行,

输入命令 startup ,

出现以下内容启动成功。

IDEA下spring boot项目打包war包部署外部tomcat问题

第五步,访问tomcat自带配置的端口号即可访问项目localhost:8080/xxxx/....。

另外如需修改tomcat端口号,参见另一篇文章修改tomcat端口号

这是我所遇到的问题以及解决办法,希望也能适用于你,喜欢就点个赞,谢谢啦。