• Spring Boot 学习系列(03)—jar or war,做出你的选择


    此文已由作者易国强授权网易云社区发布。

    欢迎访问网易云社区,了解更多网易技术产品运营经验。


    两种打包方式

    • 采用Spring Boot框架来构建项目,我们对项目的打包有两种方式可供选择,一种仍保持原有的方式不变,package一个war包放置到外置的应用容器中;另一种则是直接打包成一个jar包,这个jar包里面包含了内置的应用容器,可以通过Java命令直接启动运行。

    jar包方式

    • 对于jar包的方式,前面文章的示例中其实我们就是采用的此种方式,使用方式不再赘述。

    war包方式

    • 如果采用war包的方式,其实也很简单,我们仅仅需要变更下配置即可,具体操作如下所示:

      1. 将pom.xml文件中打包方式变更成war

         <groupId>com.example.future</groupId>
         <artifactId>bingo</artifactId>
         <version>0.0.1-SNAPSHOT</version>
         <packaging>war</packaging>
      2. 变更内置容器(默认tomcat)的作用范围为provided,这样在打包时就不会将内嵌的容器打入war包中。在依赖中加入如下内容:

         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-tomcat</artifactId>
             <scope>provided</scope>
         </dependency>
      3. 自定义一个servlet初始化类,继承SpringBootServletInitializer类,如下所示:

             package com.example.future;     import org.springframework.boot.builder.SpringApplicationBuilder;     import org.springframework.boot.web.support.SpringBootServletInitializer;     /**
              * @author future
              */
             public class ServletInitializer extends SpringBootServletInitializer {         @Override
                 protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {             return application.sources(BingoApplication.class);
                 }
             }
      4. 通过以上步骤即可完成war包方式的改写。我们再执行package命令时,在target目录下生成的即为项目war包了。




    打包方式的选择


    • 具体的打包方式可以根据我们项目的实际需求以及运维现状来决定。显而易见的,如果采用jar包的方式进行部署,那么对于容器(如tomcat)的管理,开发人员可以介入其中自行维护,部署也相对简单些。当然,若需要运维在外部配置指定也是可以的,在使用java命令启动打好的jar包时指定运行参数即可。


    • 不足之处,欢迎指正,谢谢~


    免费体验云安全(易盾)内容安全、验证码等服务

    更多网易技术、产品、运营经验分享请点击


    相关文章:
    【推荐】 分布式存储系统可靠性系列一:如何估算
    【推荐】 深入浅出“跨视图粒度计算”--3、EXCLUDE表达式

  • 相关阅读:
    ECMAScript与JavaScript
    AngularJS多模块开发与路由
    ionic调用摄像头
    ionic 打包
    ionic简介
    git---小乌龟提交
    git---控制面板提交
    获取百度网盘真实下载地址
    js高级---本地对象、内置对象、宿主对象
    js高级---js架构
  • 原文地址:https://www.cnblogs.com/163yun/p/9881235.html
Copyright © 2020-2023  润新知