Spring Boot 打包方式的选择

新建Spring Boot后,会自带打包方式,现在一般都是打包成jar包,当然你想打包成war包也可以,我就不介绍了!本文主要想谈谈自带的打包方式和assembly打包方式,这两者有什么区别和优缺点呢?

使用IDEA 的 spring initializr或者 start.spring.io创建 Spring Boot 项目后,可以在 pom.xml文件中看到自带的 maven打包方式

使用命令 mvn clean package 即可将项目打包成jar包,但这种打包的方式将所有的配置文件和模板文件(如果存在template的话)都打包在jar中,如果更改,必须重新打包。

思考一下

这样的打包方式确实非常简单和方便,但是当我们修改配置时,就需要重新打包发布,还有个问题就是,线上数据库地址是在配置文件中的,开发人员一般是不知道的(当然运维也不会告诉你,免得误操作),那难道让运维去打包??明显不可能!所以我们可以采取下面的 assembly打包方式!

第一步:排除Spring Boot 自带的打包插件:注释或删除pom.xml中的代码

第二步:添加assembly打包插件,在pom.xml中添加

第三步配置assembly:首先在pom.xml中,添加如下代码,分离配置文件:

其次,在assemble.xml中配置

说下我遇到的坑:

  • 1.include一定要将所有的配置文件都包含进去。
  • exclude 一定要排除jar包下的所有配置文件,否则,将会默认先使用jar包中的配置,这也就是为什么修改了conf目录下的配置文件后,没有生效的原因!

两种方式各有利弊吧,默认的方式方便快捷,更适合用来开发,测试。assembly打包方式则是去服务化和工程化的,更适用公司的流程和生产。如果公司大部分项目部署,是由开发来完成的那么推荐采用自带的方式,如果有运维专门维护上线,用assembly更为规范一些。

来源:https://mp.weixin.qq.com/s/5sTdMcKd9Hv7rSxYRRKKAA

Original: https://www.cnblogs.com/konglxblog/p/16749077.html
Author: china_coding
Title: Spring Boot 打包方式的选择

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/570385/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • SpringBoot日志框架

    概述 项目中日志系统是必不可少的的。 目前比较流行的日志框架有 log4j、 logback等 。可能大家还不知道,这两个框架的作者是同一个人, Logback旨在作为流行的 lo…

    Java 2023年6月8日
    0118
  • Java 函数式编程「一」

    由 JS 转 Java,写惯了 React,习惯了函数式,因此转 Java 时也是先学函数式。 语法糖「Syntactic Sugar」 起初,Java 的函数式看起来是匿名类的一…

    Java 2023年6月16日
    098
  • 递归算法详解

    what:在计算机科学中是指一种通过重复将问题分解为同类的子问题而解决问题的方法 when:发现问题可以分解为同类子问题且采用同样的方式去解决 how:找到递归出口和递归体 步骤:…

    Java 2023年6月9日
    091
  • JVM学习笔记之内存分配与回收策略【六】

    内存分配与回收策略 以下例子使用 openjdk8 测试 大多数情况下,对象在新生代 Eden 区中分配。当 Eden 区没有足够空间进行分配时,虚拟机将发起一次 Minor GC…

    Java 2023年6月5日
    067
  • mvn 打包和启动jar包

    mvn=======打包 mvn -B clean package -e -U ‘-Dmaven.test.skip=true’ 启动jar包 java -…

    Java 2023年6月16日
    094
  • 常用Dos命令

    文件夹上面的路径换成cmd 进入控制台,并且控制台的路径,也就是当前的文件夹cmd地方的文件路径管理员方式运行Cmd 此电脑搜索cmd –>命令提示符 &#821…

    Java 2023年6月6日
    089
  • nginx server中的root和location的root的区别

    自己发现公司服务器上的nginx的配置文件里,server中有个root, location中也有root。当直接访问域名,后面什么都不加, 发现走的是location里面的roo…

    Java 2023年5月30日
    083
  • Spring Bean的作用域

    Spring Bean的作用域或者说范围主要有五种: 作用 描述 singleton 在spring IoC容器仅存在一个Bean实例,Bean以单例方式存在,bean作用域范围的…

    Java 2023年6月14日
    086
  • fastposter v2.9.0 程序员必备海报生成器

    fastposter v2.9.0 程序员必备海报生成器 🔥🔥🔥 fastposter海报生成器是一款快速开发海报的工具。只需上传一张背景图,在对应的位置放上组件( &#x…

    Java 2023年6月5日
    0102
  • Node.js(六)连接MongoDB进行数据访问

    npm init -y(初始化项目) npm install mongodb –save(引入MongoDB) const { MongoClient } = requ…

    Java 2023年6月15日
    067
  • Java基础–异常处理

    Java中的错误会以对象方式呈现为 java.lang.Throwable的个种子类示例。通过捕获包装错误的对象,可以针对错误做一些对应的处理。本文主要记录其中比较容易记错的点。 …

    Java 2023年6月5日
    087
  • 基于监控服务打造微服务治理生态体系

    基于上一篇《微服务海量日志监控平台》介绍的平台架构,继续架构的优化和能功的扩展,实现服务治理能力。 问题现状态 日志监控平台为我们带来了很多排查解决线上问题的便利。但是从某种程度上…

    Java 2023年6月6日
    0104
  • Java中使用feign遇到的坑

    1.解析接口返回的数据时,失败了。 feign.codec.DecodeException: Could not extract response: no suitable Htt…

    Java 2023年5月29日
    095
  • 一文搞懂Kafka的基本原理及使用

    Kafka的基本原理及使用 一、基本概念及原理 1、Kafka特点 Kafka 是一个分布式的流式平台,流式平台包括以下三个特点: 发布和订阅消息(流),类似于一个消息队列或企业消…

    Java 2023年6月8日
    0101
  • JAVA入门基础_从零开始的培训_Git入门使用

    Git概述及下载安装 集中式版本控制与分布式版本控制概述 Git下载与安装 Git常用命令 Git所覆盖的区域 全局用户名和邮箱、仓库状态、初始化、添加删除暂存区、提交到本地库、查…

    Java 2023年6月9日
    0119
  • 将链表按照左右分区重新排列

    将链表按照左右分区重新排列 问题重述: 给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → &#…

    Java 2023年6月7日
    069
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球