SpringBoot打包 lib分离 config分离

关于Springboot 应配置外移和Maven个性化打包一些做法 期望达到的效果是每次更新服务器端应用只需要更新主程序jar 依赖jar单独分离。配置文件独立存放于文件夹内,更新程序并不会覆盖已有的配置信息。 一、配置外移 1、开发环境外移 做法:在项目同级或者上级创建config文件夹放置配置文件,具体module内部application.properties通过spring.profiles.include引用外部配置。利用的是springboot加载配置顺序原理,优先同级config文件夹,然后是同级properties,继而是jar包内部的propertie. 阅读详情

最终打包后的目录结构

│   start.sh
├───config
│       application-dev.yml
│       application-prod.yml
│       application.yml
│       ehcache.xml
│       logback.xml
├───logs
├───lib
│       spring-context-support-5.1.2.RELEASE.jar
│       spring-core-5.1.2.RELEASE.jar
│       spring-oxm-5.1.2.RELEASE.jar
│       spring-retry-1.2.2.RELEASE.jar
│       spring-tx-5.1.2.RELEASE.jar
│       stax2-api-3.1.4.jar
│       woodstox-core-5.0.3.jar
│       zkclient-0.10.jar
│       zookeeper-3.4.11.jar
│ 		 .........
└───logs

pom.xml

<build>
        <plugins>
            <!-- Compiler 插件, 设定JDK版本 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>

            <!-- resource插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.7</version>
                <configuration>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>**/*.properties</exclude>
                        <exclude>**/*.xml</exclude>
                        <exclude>**/*.yml</exclude>
                        <exclude>static/**</exclude>
                        <exclude>templates/**</exclude>
                    </excludes>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.18.1</version>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <layout>ZIP</layout>
                    <includes>
                        <include>
                            <groupId>cn.wisec.meerkat</groupId>
                            <artifactId>meerkat-slice</artifactId>
                        </include>
                    </includes>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>target/lib</outputDirectory>
                            <excludeTransitive>false</excludeTransitive>
                            <stripVersion>false</stripVersion>
                            <includeScope>runtime</includeScope>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.5.3</version>
                <executions>  <!--执行器 mvn assembly:assembly -->
                    <execution>
                        <id>make-zip</id><!--名字任意 -->
                        <phase>package</phase><!-- 绑定到package生命周期阶段上 -->
                        <goals>
                            <goal>single</goal><!-- 只运行一次 -->
                        </goals>
                        <configuration>
                            <descriptors> <!--描述文件路径 -->
                                <descriptor>src/main/bin/assembly.xml</descriptor>
                            </descriptors>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

        </plugins>
    </build>

src/main/bin/assembly.xml

<assembly
        xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
    <id>bin</id>
    <formats>
        <format>zip</format>
    </formats>
    <fileSets>
        <fileSet>
            <directory>src/main/resources</directory>
            <outputDirectory>/config/</outputDirectory>
            <includes>
                <include>**/*</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>${project.build.directory}</directory>
            <outputDirectory>/</outputDirectory>
            <includes>
                <include>lib/*.jar</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>${project.build.directory}</directory>
            <outputDirectory>/lib</outputDirectory>
            <includes>
                <include>*.jar</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>src/main/bin</directory>
            <outputDirectory>/</outputDirectory>
            <includes>
                <include>start.sh</include>
                <include>logs</include>
            </includes>
        </fileSet>
    </fileSets>
</assembly>

src/main/bin/start.sh

#!/bin/sh
dir=`cd $(dirname $0); pwd -P`
jar=$(find ./lib -type f -name  meerkat-slice-*.jar)
echo $jar
nohup java -server -Duser.dir=$dir -XX:-UseGCOverheadLimit -Xms1024m -Xmx30720m -XX:PermSize=256M -XX:MaxPermSize=512M -Dloader.path=./lib,./config -jar $jar > /dev/null &

注意事项

  • 不同的项目需要在pom.xml/build/plugins中
 		<plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <layout>ZIP</layout>
                    <includes>
                        <include>
                            <groupId>cn.wisec.meerkat</groupId> //需要换成你打包工程的groupId
                            <artifactId>meerkat-slice</artifactId>//需要换成你打包工程的artifactId
                        </include>
                    </includes>
                </configuration>
		 </plugin>
  • 在start.sh中将jar=$(find ./lib -type f -name meerkat-slice-*.jar)中的meerkat-slice改成你打包工程的artifactId
Spring boot 打jar包分离lib的正确配置方式 spring boot打jar包分离lib后,配置文件的方式,在网上可以搜到很多答案,但是都不够完善,今天小编给大家带来了Spring boot 打jar包分离lib的正确配置方式,感兴趣的朋友一起看看吧 立即下载

相关推荐

Spring boot打包jar分离lib和resources方法实例

主要介绍了Spring boot打包jar分离lib和resources方法实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

Java:优化SpringBoot 打包后的jar包体积分离lib和config

通过打包优化,可以将SpringBoot 打包后的jar包体积大大的减小,加快传输效率,减少部署时间将SpringBoot 打包后的jar包解压可以得到3个文件夹。

彭世瑜的博客 2618

OB4.X集群状态running但是oceanbase-ce is not running

自 V3.2.0 起,若 obd 设置了加密密钥,执行 display 命令输出的集群信息中,密码相关内容为加密状态。若需输出明文密码,可在命令中添加 --epk/–encryption-passkey 指定密钥用于验证。obd 运维的数据库,启停需要使用obd进行操作,停机时候没有使用obd会导致集群状态running但是oceanbase-ce is not running。查看集群中的租户时无租户反馈,警告oceanbase-ce is not running,但是查询集群状态明明是running。

qq961573863的博客 1216

Spring Boot 打包分离配置文件

如果只是想在打成jar包的时候单独把配置文件分离出来,这个其实简单。按照规定,Spring Boot 的配置文件加载优先级如下: 当前目录下的config子目录 当前目录 classpath下的config目录 classpath根路径 优先级自上而下递减。 所以,要实现配置文件分离,只需要在可运行的jar文件的同级目录创建一个config目录,然后把配置文件复制到该目录即可。 ...

浅醉樱花雨的专栏 2万+

MTK-AWB 小结 (二)

调试总结:可以将offset 对应的ratio加大,保留更多的喜好色(偏色),影响WF statistic gain,从而影响最终的awb gain。这一部分前期CCT校准的时候就会算出一组默认值,当然这个offset offse 值用于优化T,S,wf 光下的偏色喜好度. offset。后面遇到 A H Shad 光收白或者偏色,还可以优化 A 的offset ,H offset,shad offset.new offset 计算过程(Day locus offset 和M/G offset )

qq_46056347的博客 1168

决策树(分类树、回归树)

决策树 前言:第一篇博客,最近看完决策树,想着归纳一下,也方便自己以后回顾。写的会比较全面一些,可能会有很多不太正确的地方,欢迎大家交流指正 : ) 决策树模型: 决策树模型是运用于分类以及回归的一种树结构。决策树由节点和有向边组成,一般一棵决策树包含一个根节点、若干内部节点和若干叶节点。决策树的决策过程需要从决策树的根节点开始,待测数据与决策树中的特征节点进行比较,并按照比较结果选...

你午睡了吗 9万+

Springboot应用之配置分离实现方案

springboot版本 1.5.10.RELEASE 加载jar外置的配置参数,覆盖jar内置的配置,做到配置与应用的分离。在虚拟化部署时,做到一套代码多个环境部署,提升CICD效率。 下文描述主要步骤 1、应用程序是properties配置文件,则重写PropertiesPropertySourceLoader public class StartUpConfig extends Prope...

feiying 1368

稚晖君Dummy机械臂CAN总线控制详解:从代码到实战(附常见问题排查)

本文深入解析了稚晖君Dummy机械臂的CAN总线控制技术,从协议设计到代码实现,详细介绍了CAN总线在机械臂控制中的核心价值、通信协议栈设计、运动控制指令实现及常见问题排查方法。通过实战案例和代码示例,帮助开发者快速掌握机械臂CAN总线控制的关键技术。

uuu88的博客 295

芝法酱躺平攻略(13)——SpringBoot打包Config与Resource的分离

SpringBoot下的打包设定,resource资源分离,config配置分离,maven插件。

hataksumo的博客 734

DISM错误87详解:RestoreHealth选项无法识别的修复方法

DISM(部署映像服务和管理工具)是Windows系统维护与修复的核心命令行工具,常与SFC(系统文件检查器)配合使用,用于扫描和修复组件存储损坏、系统文件缺失等问题。在执行系统健康检查时,用户常会遭遇错误87,提示“未在此上下文中识别出restorehealth选项”。该错误的本质并非工具损坏,而是命令参数结构不符合DISM的语法解析规则,或当前系统环境(如Windows 7、WinRE/PE、32位环境)不支持该参数。理解DISM的命令层级、参数挂载关系以及运行上下文,是精准排除故障的前提。通过核对标准

weixin_34116482的博客 484

Coze工作流实战:Coze一键生成沉浸式历史故事视频

【coze工作流实战】一键生成火爆的沉浸式历史故事视频!短短3分钟,顶替你3天的工作量!

bickys的博客 1004

springboot 打包插件spring-boot-maven-plugin打包机制及内部结构分析

springboot 打包插件spring-boot-maven-plugin打包机制及内部结构分析

zzy7075的专栏 3524

“守望先锋”网络同步分析

守望先锋”(Overwatch)是一款由暴雪娱乐开发的团队基础第一人称射击游戏(FPS),于2016年正式发布。游戏以其独特的角色设计、丰富的游戏模式和高度的团队合作性而受到广泛欢迎。类型:第一人称射击(FPS)/多人在线战斗竞技场(MOBA元素)平台玩家人数:每场比赛由两个六人队伍组成,共12名玩家。客户端/服务器模型:在这种模型中,客户端负责处理用户输入和表现逻辑,而服务器则负责游戏的核心逻辑和状态管理。客户端与服务器之间通过网络进行通信,确保游戏状态的一致性。强同步机制。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 429

SpringBoot项目利用maven自定义打包结构

From: https://blog.youkuaiyun.com/q15858187033/article/details/80742117 SpringBoot官方提供的demo中,pom.xml文件里引用了官方提供的打包插件 <build> <plugin> <groupId>org.springframework.b...

JoeBlackZQQ的专栏 947

引入高分辨率特征层保持的YOLOv10小目标增强:从思路到完整实现

大概两个月前,我在做一个无人机航拍图像检测的项目,目标是识别图片里的小型车辆和行人。用的数据集是VisDrone,相信做小目标检测的朋友对这个数据集都不陌生。一开始我直接跑了官方YOLOv10的代码,结果在tiny vehicle这一类上mAP50只有可怜的0.312。那些小目标基本就是几个像素点,YOLOv10在三次下采样之后,这些小目标的特征几乎就消失不见了。 后来我折腾了大概三周,尝试了各种方法:改anchor、调loss权重、做数据增强、甚至考虑过换检测头。最后发现最有效的还是引入一个高分辨率特征

YOLO 50

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Springboot 打jar包实现分离依赖lib和配置

Springboot 打jar包实现分离依赖lib和配置 前言操作步骤 ) 前言 为了业务需要配置文件和jar分离,便于使用者修改配置信息,在网上找了很久,最终找到一个简单有效的方法。 操作步骤 打开project工程的pom.xml文件,将下列配置粘贴到pom文件中: <properties> <java.version>1.8</java.version> <!--在此配置打包输出的路径--> &l

qq_41579515的博客 750

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

30 SpringBoot & Maven 依赖、配置分离打包

本篇文章只作为个人参考笔记使用 支持原创精神,原文链接: SpringBoot & Maven 依赖、配置分离打包_有三i的博客-优快云博客_maven springboot 打包 介绍 随着技术的迭代,在我们日常的开发中现在普遍都是使用SpringBoot进行开发了,在使用maven构建的传统web应用时,我们都是将项目打包成war包,放在tomcat中部署,各个目录资源都是分离开的,对于配置文件的修改非常方便。但是使用SpringBoot的打包工具的话,默认是打包成一个jar文件,.

qq_44885775的博客 555

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【sprinb-boot】资源、配置、lib分离打包

前言 springboot 2.0.0.RELEASE maven 3.5.0 使用maven命令mvn package打包spring boot项目时,将资源文件分离出来。 pom.xml配置 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" x...

sayyy的专栏 521

springboot maven 依赖包 配置文件 分离打包

springboot项目打包成jar可以直接运行,但是将项目copy到生产环境时,文件实在是有点大,不方便部署。如果遇到网络不好的情况下,可能只更新了一个class文件,但却要讲整个几十兆的jarcopy到生产环境,确实不划算。所以如下可以将依赖包,配置文件,运行文件分离打包。以后多半是更新运行文件,分离后可能也就几百k 此方法只需要修改pom文件,需要增加三个plug。配置文件如下: 1. jar依赖包分离 在打包时将依赖包copy到指定目录 2. 配置文件分离 ...

qq_24856133的博客 594

Tomcat:部署前后端分离项目踩坑

本文总结了在Tomcat上部署前后端分离项目时遇到的三个常见问题及其解决方案。首先,SpringBoot打包成war包时,本地jar包依赖未被正确包含,需手动将jar包从lib-provided路径移至lib路径。其次,Vue3前端项目部署后,路径访问问题可通过修改vite.config.ts中的base配置项解决。最后,前端项目刷新页面出现404错误,可通过在WEB-INF目录下创建web.xml文件并配置错误页面重定向至index.html来解决。这些解决方案有助于确保项目在Tomcat上顺利部署和运行

席木木的博客 841

springboot项目创建笔记27 之《springboot打包优化》

由于springboot项目一般是以jar包形式运行,默认是将依赖的jar包一起打包到程序中,部署时传输的文件比较大。所以我们可以将程序的jar包、lib库、配置文件分离开来,方面升级部署。 一、用到的插件 1、spring-boot-maven-plugin插件 这个是springboot的插件,会将项目所有的依赖打入BOOT-INF/lib 2、maven-jar-plugin插件 打包时分离程序和依赖包 3、maven-dependency-plugin插件 将依赖包复制到lib目录下 3.

csj50的专栏 761

Springboot 打jar包分离lib,配置文件正确方式

原文地址:https://my.oschina.net/xiaozhutefannao/blog/1932764 参考文档处理时,一直出问题,稍微调整了一下出来了,我这个办法有点笨,模块较多的话会比较麻烦。 这边只列出调整了地方的配置文件 启动模块的pom.xml &amp;amp;lt;build&amp;amp;gt; &amp;amp;lt;plugins&amp;amp;gt; &amp;amp;lt;!-- 打出项目依赖的第三方包,放在lib

m0_37598340的博客 5180

springboot打包瘦身,分离配置文件、lib、jar

要最终打包的pom文件这样改,资源文件打到config目录下,依赖打到lib目录下,服务代码打成jar包,这样子每次更新的时候就更新jar就好了。在每次运行的时候输入如下的语句就ok了。

shgzzd的博客 404

Spring Boot 多种生产打包方式详解

生产上发布 Spring Boot 项目时,流程颇为繁琐且低效。但凡代码有一丁点改动,就得把整个项目重新打包部署,耗时费力不说,生成的 JAR 包还特别臃肿,体积庞大。每次更新项目,光是上传这大文件就得花费不少时间,严重影响工作节奏。为解决这一痛点,我打算把依赖库以及配置文件(lib 文件夹下的那些 jar 包,还有config下的applacation.yml等文件)从项目主体里剥离出来,后续部...

码猿技术专栏 421

sprint boot 打包分离静态文件

spring boot 提供的打包方式,是把所有的文件打成一个jar包,静态文件无法分离出来 1.无法进行nginx动静分 2.jar过大,自己项目的代码其实很小,紧急更新上传很慢 故需要通过修改pom文件进行分离打包 直接放pom关键配置 <plugin> <groupId>org.apache.maven.plugins<...

静艺的专栏 677

springboot打包分离lib和配置文件

每次上传都几百兆的文件,太慢了,而且配置文件改一下就要重新打包比较麻烦。就修改了打包方式,每次只需要上传代码的jar包就行了。

orangeTop的博客 620
上一篇: 欢迎使用优快云-markdown编辑器---学习markdown
下一篇: es是否可以用于实时仓库
changs_roid
博客等级 码龄11年 6粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值