zoukankan      html  css  js  c++  java
  • springboot项目打war包流程

    目前,前后端分离的架构已成主流,因此使用springboot构建应用是非常快速的,项目发布到服务器上的时候,只需要打成一个jar包,然后通过命令 : java -jar jar包名称即可启动服务了;

    但在有些场景下,比如部署到外部的服务器的时候,客户方指定要以tomcat的形式启动服务的时候,即需要由服务提供方提供一个war包的时候,该怎么办呢?

    一开始没有查找资料,自己差点准备使用传统的ssm框架改造服务的,后来思考和参考相关资料后,发现只需要挤出简单的配置和改造就可以做到,下面是记载将springboot项目改造打包成war的流程,算是一个简单的参考:

    1、pom文件添加如些依赖,

     <!--添加servlet-api的依赖,用来打war包  -->
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <scope>provided</scope>
            </dependency>

    这个依赖主要是用于在和jsp进行整合的使用,可酌情添加

    2、排除springboot内置的tomcat干扰

     <!--最终打成war包,排除内置的tomcat-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <exclusions>
                    <exclusion>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter-tomcat</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

    有人说也可以添加一个tomcat的依赖,这种方式也许是可以的,但是我没有尝试,大多数推荐的还是上面一种,即排除掉内置的tomcat,

     <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-tomcat</artifactId>
          <scope>provided</scope>
    </dependency>

    3、改造启动类

    改造之前:

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

    改造之后:

    @SpringBootApplication
    public class MainApp extends SpringBootServletInitializer {
    
        public static void main(String[] args) {
            SpringApplication.run(MainApp.class,args);
        }
    
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
            return builder.sources(MainApp.class);
        }
    }

    这种改造方式也是官方比较推荐的方法

    4、pom文件中不要忘了maven编译插件

     <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>

    当然,在生成环境下,这里可以做更加精细的配置,

    5、如果在idea的环境下,依次执行窗口里的 clean ,install即可,
    在这里插入图片描述

    执行完毕后,可以看到war包已经生成了,默认是在target目录下,位置可以在pom文件中进行配置,
    在这里插入图片描述

    6、使用tomcat进行部署启动,

    在这里插入图片描述
    可以自己指定启动端口和访问的路径,
    在这里插入图片描述

    然后启动tomcat,看起来仍然像是springboot的启动界面,
    在这里插入图片描述

    为了验证,我们访问一下项目里面的接口,这里访问我们的swagger,可以看到,已经可以成功访问了,
    在这里插入图片描述

    项目启动的时候出现了乱码,如下所示,
    在这里插入图片描述

    解决办法如下,添加配置,-Dfile.encoding=UTF-8即可,
    在这里插入图片描述

  • 相关阅读:
    .NET 正则表达式使用高级技巧之替换类介绍
    道法术器势
    JS函数匿名替换
    批量更改数据库表架构(生成sql后直接执行!)
    转: 从现实生活中理解什么是广播机制
    public View getView(int position, View convertView, final ViewGroup parent)三个参数的意思
    Android Intent个人介绍
    WPF中Timer与DispatcherTimer类的区别
    C# 使用ManualResetEvent 进行线程同步
    C# 使用AutoResetEvent进行线程同步
  • 原文地址:https://www.cnblogs.com/scote/p/13680055.html
Copyright © 2011-2022 走看看