Maven多环境打包方法配置

简单记录一下SpringBoot多环境打包配置方法,分部署环境和是否包含lib依赖包两个维度

目录

  • 一、需求说明
  • 二、目录结构
  • 三、配置方案
  • 四、验证示例

一、需求说明

  • 基于Spring Boot框架的项目
  • 分开发,测试,生产等编译部署环境(每一个环境只包含本环境对应的配置文件)
  • 可以包含或者去除lib依赖包( 依赖分离方式部署,节约jar文件上传服务器时间 )
  • Maven 方式单体工程打包 ( 适合中小业务快速部署 )

二、目录结构

按照不同的编译环境,分多个配置文件,目录结构如下图所示:
在这里插入图片描述

三、配置方案

在 工程目录下的 pom.xml 文件中配置打包相关( <build> ... </build>) 的内容:

       <!-- 默认编译配置项 --><build><finalName>${project.name}</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin><plugin><artifactId>maven-compiler-plugin</artifactId></plugin><plugin><artifactId>maven-source-plugin</artifactId></plugin></plugins></build><!-- nolib 表示剔除lib包下面的所有maven依赖项目 --><profiles><profile><id>nolib</id><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><layout>ZIP</layout><includes><include><groupId>nothing</groupId><artifactId>nothing</artifactId></include></includes></configuration></plugin></plugins></build></profile><!-- 默认环境配置,包含所有 --><profile><id>default</id><activation><activeByDefault>true</activeByDefault></activation></profile><!-- 通用动态环境配置 --><profile><id>dyn-env</id><properties><!-- 设置 env 的默认值为 dev,可被外部 -Denv 覆盖 --><env>dev</env></properties><build><resources><!-- 默认配置 --><resource><directory>src/main/resources</directory><!-- 排除其他环境的配置文件,若 Profile 未激活时默认包含 application.yml --><excludes><exclude>application-*.yml</exclude><exclude>db-*.setting</exclude><exclude>redisson/redisson-config-*.yml</exclude></excludes></resource><resource><directory>src/main/resources</directory><includes><!-- 动态匹配当前环境的配置文件 --><include>application-${env}.yml</include><include>db-${env}.setting</include><include>redisson/redisson-config-${env}.yml</include></includes></resource></resources></build></profile></profiles>

上面 默认编译配置项下的 maven-compiler-pluginmaven-source-plugin 插件是可选项。

nolib环境 表示剔除lib包下所有maven依赖项(这样打包出来的jar 只有几M大小,甚至只有几百KB)

四、验证示例

  • 示例1:使用prod环境打包且不包含lib依赖库
mvn clean package -Pdyn-env,nolib -Denv=prod
  • 示例2:使用prod环境打包且包含lib依赖库:默认包含lib依赖库
mvn clean package -Pdyn-env -Denv=prod
  • 示例3:使用默认环境打包且包含lib依赖库:默认包含lib依赖库 且默认application.yml中指定环境
mvn clean package
  • 示例4:使用默认环境打包且不包含lib依赖库:不包含lib依赖库 且默认application.yml中指定环境
mvn clean package -Pnolib 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/67760.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringMVC 实战指南:打造高效 Web 应用的秘籍

第一章&#xff1a;三层架构和MVC 三层架构&#xff1a; 开发服务器端&#xff0c;一般基于两种形式&#xff0c;一种 C/S 架构程序&#xff0c;一种 B/S 架构程序使用 Java 语言基本上都是开发 B/S 架构的程序&#xff0c;B/S 架构又分成了三层架构三层架构&#xff1a; 表现…

github汉化

本文主要讲述了github如何汉化的方法。 目录 问题描述汉化步骤1.打开github&#xff0c;搜索github-chinese2.打开项目&#xff0c;打开README.md3.下载安装脚本管理器3.1 在README.md中往下滑动&#xff0c;找到浏览器与脚本管理器3.2 选择浏览器对应的脚本管理器3.2.1 点击去…

阳振坤:AI 大模型的基础是数据,AI越发达,数据库价值越大

2024年1月12日&#xff0c;第四届OceanBase数据库大赛决赛在北京圆满落幕。在大赛的颁奖典礼上&#xff0c;OceanBase 首席科学家阳振坤老师为同学们献上了一场主题为“爱上数据库”的公开课&#xff0c;他不仅分享了个人的成长历程&#xff0c;还阐述了对数据库行业现状与未来…

2.1.3 第一个工程,点灯!

新建工程 点击菜单栏左上角,新建工程或者选择“文件”-“新建工程”,选择工程类型“标准工程”选择设备类型和编程语言,并指定工程文件名及保存路径,如下图所示: 选择工程类型为“标准工程” 选择主模块机型; 选择熟悉的编程语言; 填写工程名,选择存放路径; 确定。 编…

Chrome谷歌浏览器如何能恢复到之前的旧版本

升级了谷歌最新版不习惯&#xff0c;如何降级版本 未完待续。。 电脑中的Chrome谷歌浏览器升级到了最新版本&#xff0c;但是有种种的不适应&#xff0c;如何能恢复到之前的旧版本呢&#xff1f;我们来看看操作步骤&#xff0c;而且无需卸载重装。 怎么恢复Chrome 之前版本&a…

IO进程----进程

进程 什么是进程 进程和程序的区别 概念&#xff1a; 程序&#xff1a;编译好的可执行文件 存放在磁盘上的指令和数据的有序集合&#xff08;文件&#xff09; 程序是静态的&#xff0c;没有任何执行的概念 进程&#xff1a;一个独立的可调度的任务 执行一个程序分配资…

PHP语言的数据库交互

PHP语言的数据库交互 引言 在现代Web开发中&#xff0c;数据库是存储和管理应用数据的重要组成部分。随着互联网的快速发展&#xff0c;网站和应用程序对数据存储和操作的需求变得越来越复杂。PHP作为一种广泛使用的服务器端脚本语言&#xff0c;提供了多种数据库交互的方法&…

npm操作大全:从入门到精通

引言 在现代前端开发中&#xff0c;npm&#xff08;Node Package Manager&#xff09;是不可或缺的工具。无论是安装依赖、管理项目&#xff0c;还是发布自己的包&#xff0c;npm都扮演着重要的角色。本文将带你从npm的基础操作开始&#xff0c;逐步深入到高级用法&#xff0c…

LabVIEW处理复杂系统和数据处理

LabVIEW 是一个图形化编程平台&#xff0c;广泛应用于自动化控制、数据采集、信号处理、仪器控制等复杂系统的开发。它的图形化界面使得开发人员能够直观地设计系统和算法&#xff0c;尤其适合处理需要实时数据分析、高精度控制和复杂硬件集成的应用场景。LabVIEW 提供丰富的库…

部署Metricbeat监测ES

官方参考文档 安装Metricbeat curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-7.17.27-linux-x86_64.tar.gztar xzvf metricbeat-7.17.27-linux-x86_64.tar.gz设置 Metricbeat连接到 Elasticsearch 进入metricbeat目录配置metricbeat.yml …

高效安全文件传输新选择!群晖NAS如何实现无公网IP下的SFTP远程连接

文章目录 前言1. 开启群晖SFTP连接2. 群晖安装Cpolar工具3. 创建SFTP公网地址4. 群晖SFTP远程连接5. 固定SFTP公网地址6. SFTP固定地址连接 前言 随着远程办公和数据共享成为新常态&#xff0c;如何高效且安全地管理和传输文件成为了许多人的痛点。如果你正在寻找一个解决方案…

为医院量身定制做“旧改”| 全视通物联网智慧病房

随着经济工作会议、卫生健康工作会议、“经济高质量发展成效”系列新闻发布会的依次召开&#xff0c;强基工程、三明医改、儿科和精神卫生服务年、中医药传承创新发展、促进生育、养老服务改革、病房改造提升行动...等关键词正成为新的热点&#xff0c;2025年卫生健康工作面临一…

PHP同城配送小程序

&#x1f680; 同城极速达——您生活中的极速配送大师 &#x1f4f1; 一款专为现代都市快节奏生活量身打造的同城配送小程序&#xff0c;同城极速达&#xff0c;集高效、便捷、智能于一身&#xff0c;依托ThinkPHPGatewayWorkerUniapp的强大架构&#xff0c;巧妙融合用户端、骑…

ipad和macbook同步zotero文献附件失败的解决办法

背景&#xff1a;我所有的文献及其附件pdf都是在台式机&#xff08;windows系统&#xff09;&#xff0c;想要把这些文献同步到云上&#xff0c;然后再从云上同步到平板和其他笔记本电脑比如macbook。文献同步虽已成功&#xff0c;但文献附件都无法打开。 平板报错如下&#xf…

个人学习 - 什么是Vim?

观我往旧&#xff0c;同我仰春 - 2025.1.10 声明 仅作为个人学习使用&#xff0c;仅供参考 本文所有解释参考笔者个人理解&#xff0c;最终目的是服务于自我学习&#xff0c; 如果你需要了解官方更规范的解释&#xff0c;请自行查阅 Vim 是什么 Vim 是一个强大的 文本编辑器…

RK3568上电启动流程详解 [十四]

由于 QEMU 在设备仿真方面的能力欠缺&#xff0c;比如我们无法让 QEMU 模拟一个 IIC 设备&#xff08;除非对 QEMU 的代码动刀子&#xff09;&#xff0c;所以我们需要一个真实的物理环境&#xff0c;这里我使用了烂大街的 RK3568 开发板&#xff0c;我们需要让 X-Hyper 在 RK3…

开关电源基础

文章目录 线性电源与开关电源选用 开关稳压器脉宽调制简化的降压开关电源 开关电源类型输出电压分拓扑分 控制器与稳压器效率与 V o u t V_{out} Vout​ 同步与非同步隔离与非隔离非隔离式拓扑结构隔离式拓扑结构 线性电源与开关电源 线性稳压器就是我们通常说的LDO: 传输元件…

实践-并发调用qwen-openai格式http请求

1、用ms-swift启动模型 2、用python实现http调用 3、用并发实现同时调用 import requests class Qwen:api_key EMPTYbase_url "http://127.0.0.1:8001/v1/chat/completions"name qwen2_5-72b-instructclass Llama:api_key EMPTYbase_url "http://127.0.0…

微信小程序-base64加解密

思路&#xff1a;先创建一个base64.js的文件&#xff0c;这个文件可以作为专门加解密的文件模块&#xff0c;需要时就引用&#xff1b;创建好后&#xff0c;引用base64.js里的加解密函数。 注意&#xff1a;引用模块一定要引用正确的路径&#xff0c;否则会报错。 base64.js:…

150 Linux 网络编程6 ,从socket 到 epoll整理

1. 只能被一个client 链接 socket例子 此例子用于socket 例子&#xff0c; 该例子只能用于一个客户端连接server。 不能用于多个client 连接 server socket_server_support_one_clientconnect.c /* 此例子用于socket 例子&#xff0c; 该例子只能用于一个客户端连接server。 不…