springcloud多环境部署打包 - maven 篇

背景

在使用 springboot 和sringcloud+nacos开发项目过程中,会有多种环境切换,例如开发环境,测试环境,演示环境,生产环境等,我们通过建立多个 yml 文件结合 profiles.active 属性进行环境指定,但是需要打包时就要手动更改配置文件逐个打包,容易造成不必要的误操作,本文就介绍如何进行不同环境配置文件的动态切换及一次性打包多个不同环境的部署包

配置 pom 文件

pom 文件添加 profiles 配置,项目有多少个配置文件,添加多少个子节点,profiles 标签于 parent 标签同级,这样我们就可以在右侧 maven 的配置项中勾选指定的环境

<!-- 配置文件 --><profiles><profile><!-- 研发环境 --><id>dev</id><properties><profiles.active>dev</profiles.active></properties><activation><activeByDefault>true</activeByDefault></activation></profile><profile><!-- 测试环境 --><id>test</id><properties><profiles.active>test</profiles.active></properties></profile><profile><!-- 线上环境 --><id>pro</id><properties><profiles.active>pro</profiles.active></properties></profile></profiles>
<build><finalName>${project.artifactId}-${project.version}.${project.packaging}</finalName><resources><!-- 代码生成器配置文件过滤 --><resource><directory>src/main/resources</directory><includes><include>bootstrap.yml</include><include>bootstrap-${profiles.active}.yml</include><include>**/*.xml</include></includes><filtering>true</filtering></resource>
</resources>
<plugins><!-- 编译 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin><!-- 打包 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>3.3.2</version></plugin></plugins>

创建多个配置文件

bootstrap.yml      #主配置文件

bootstrap-dev.yml #开发环境配置

......

bootstrap.yml文件内容

spring:profiles:active: @profiles.active@

bootstrap-dev.yml文件内容

server:port: 9041servlet:context-path: /servicetomcat:uri-encoding: UTF-8max-http-form-post-size: -1
spring:jackson:date-format: yyyy-MM-dd HH:mm:sstime-zone: GMT+8application:name: serviceprofiles:active: @profiles.active@main:allow-bean-definition-overriding: truecloud:nacos:discovery:server-addr: @nacos.server@ip: @nacos.discovery@config:server-addr: @nacos.server@file-extension: yaml

打包命令

CMD

mvn clean install -Pdev

idea中启动时选择profiles

总结一下:

网上都是springboot多环境打包的方法,springcloud基本没看到。Spring Boot 默认核心配置文件名为 application,支持 application.propertiesapplication.ymlapplication.yaml。后面两个本质上同一种类型。当三者同时存在时,优先级为:properties > yaml > yml。这个没去验证过,但在springclod项目中,使用了nacos配置,application.yml是不起作用的,项目根本启动不了。

有些文章说 bootstrap.yml 的优先级最高。这种说法是不完全准确的!在springcloud+nacos项目中配置必须写在bootstrap*.yml中,不然启动直接报错,因为大部分配置都在nacose中,yml文件里只有服务器名称和nacos服务器的相关配置,如addr、group及namespace的定义,其它信息都配置在nacos中。

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

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

相关文章

k8s 安装 Longhorn

Longhorn 的 helm 模板官网地址&#xff1a;Longhorn 加入仓库 helm repo add longhorn https://charts.longhorn.iohelm repo update开始部署 helm install longhorn longhorn/longhorn --namespace longhorn-system --create-namespace --version 1.5.3检查pod运行状态是…

c语言上机小练(有点难)

1.题目 用指向数组的指针编程实现&#xff1a;输入一个字符串&#xff0c;内有数字和非数字符号&#xff0c;如&#xff1a;a123x456&#xff08;此处一个空格&#xff09;17960?302tab5876。将其中连续的数字作为一个十进制整数&#xff0c;依次存放到一个数组a中。例如&…

2023_Spark_实验二十七:Linux中Crontab(定时任务)命令详解及使用教程

Crontab介绍&#xff1a; Linux crontab是用来crontab命令常见于Unix和类Unix的操作系统之中&#xff0c;用于设置周期性被执行的指令。该命令从标准输入设备读取指令&#xff0c;并将其存放于“crontab”文件中&#xff0c;以供之后读取和执行。该词来源于希腊语 chronos(χρ…

最小斯坦纳树算法介绍

最小斯坦纳树 介绍解法例题 介绍 现在有一个图&#xff0c;将它们作为全集 G ( V , E ) G(V,E) G(V,E)&#xff0c;我现在有一个这些点的子集 S S S&#xff0c; S S S大概有十几个点&#xff0c;现在想从 G G G中选出一个子图 G ′ ( V ′ , E ′ ) G(V,E) G′(V′,E′)&am…

C#无标题栏窗体拖动方法

在C#中&#xff0c;可以通过以下步骤实现无标题栏窗体拖动功能&#xff1a; 设置窗体的BorderStyle属性为None&#xff0c;这将隐藏窗体的标题栏和边框。 在窗体的MouseDown事件中&#xff0c;记录鼠标按下时的坐标。 在窗体的MouseMove事件中&#xff0c;计算鼠标移动的偏移…

【桑基图】绘制桑基图

绘制桑基图 一、绘制桑基图&#xff08;1&#xff09;方法一&#xff1a;去在线网站直接绘制&#xff08;2&#xff09;方法二&#xff1a;写html之后在vscode上运行 二、遇到的问题&#xff08;1&#xff09;当导入一些excel的时候&#xff0c;无法绘制出桑基图 一、绘制桑基图…

用23种设计模式打造一个cocos creator的游戏框架----(三)外观模式模式

1、模式标准 模式名称&#xff1a;外观模式 模式分类&#xff1a;结构型 模式意图&#xff1a;为一组复杂的子系统提供了一个统一的简单接口。这个统一接口位于所有子系统之上&#xff0c;使用户可以更方便地使用整个系统。 结构图&#xff1a; 适用于&#xff1a; 当你想为…

Nginx的安装、升级和管理

目录 一. nginx介绍 1. nginx简介 2. nginx和apache区别 二. nginx编译安装 1. 下载解压nginx安装包&#xff0c;并安装nginx依赖包 2. 创建运行用户和组 3. 编译安装并补全 4. 效验结果 三. 平滑升级nginx 1. 下载解压nginx安装包 2. 编译安装 3. 替换二进制文件 …

SpringMvc入坑系列(一)----maven插件启动tomcat

springboot傻瓜式教程用久了&#xff0c;回过来研究下SSM的工作流程&#xff0c;当然从Spring MVC开始&#xff0c;从傻瓜式入门处理请求和页面交互&#xff0c;再到后面深入源码分析。 本人写了一年多的后端和半年多的前端了。用的都是springbioot和vue&#xff0c;源码一直来…

机器学习实验六:聚类

系列文章目录 机器学习实验一&#xff1a;线性回归机器学习实验二&#xff1a;决策树模型机器学习实验三&#xff1a;支持向量机模型机器学习实验四&#xff1a;贝叶斯分类器机器学习实验五&#xff1a;集成学习机器学习实验六&#xff1a;聚类 文章目录 系列文章目录一、实验…

持续集成交付CICD: Sonarqube REST API 查找与新增项目

目录 一、实验 1.SonarQube REST API 查找项目 2.SonarQube REST API 新增项目 一、实验 1.SonarQube REST API 查找项目 &#xff08;1&#xff09;Postman测试 转换成cURL代码 &#xff08;2&#xff09;Jenkins添加凭证 &#xff08;3&#xff09;修改流水线 pipeline…

node切换版本

可打开黑窗口来进行命令输入操作&#xff1a; 1. node -v &#xff1a;查看当前版本 2.nvm list :查看已经下载的版本 3.nvm list available查看可用的node.js版本号&#xff1a; 4.nvm install node版本号(例如&#xff1a;nvm install 12.17.0)即可安装对应版本以及自动安装…

pgsql 判空并设置默认值

在 PostgreSQL 中&#xff0c;可以使用 COALESCE 函数来判断值是否为空并设置一个默认值。 例如&#xff0c;假设有一个表格 users&#xff0c;其中有一个列 username。如果 username 为空&#xff0c;则设置默认值为 ‘guest’&#xff0c;可以使用以下查询&#xff1a; SEL…

6-tornado配置文件的使用(命令行解析、文件设置)

tornado.options options 可以让服务运行前提前设置参数&#xff0c;而常见的2种设置参数方式为&#xff1a;1. 命令行设置 2. 文件设置命令行解析 使用tornado.options.define前定义&#xff0c;通常在模块的顶层。 然后&#xff0c;可以将这些选项作为以下属性的属性进行访…

损失函数(目标函数)

损失函数&#xff08;目标函数&#xff09;是用来衡量模型的预测值与实际值之间差异的函数。对于线性回归问题&#xff0c;最常用的损失函数是平方误差损失函数&#xff0c;也称为均方误差&#xff08;Mean Squared Error, MSE&#xff09;。 平方误差损失函数的形式是&#x…

某60内网渗透之跨平台横向移动【windows计划任务利用】

内网渗透 文章目录 内网渗透跨平台横向移动【windows计划任务利用】实验目的实验环境实验工具实验原理实验内容跨平台横向移动[windows计划任务利用] 实验步骤针对 WindowsXP/2003 的利用方式(at命令)针对 Windows Vista 及以上版本的利用方式(schtasks命令)跨平台横向移动…

轻快小miniconda3在linux下的安装配置-centos9stream-Miniconda3 Linux 64-bit

miniconda与anaconda的区别&#xff1a; Miniconda 和 Anaconda 是用于管理环境和安装软件包的 Python 发行版。它们之间的主要区别在于以下几点&#xff1a; 1. 安装内容和大小&#xff1a; Anaconda&#xff1a; Anaconda 是一个完整的 Python 数据科学平台&#xff0c;包含…

easyui实现省市县三级联动

一、技术: 前端采用的是easyui+jquery+jsp页面 后端采用springmvc+mybatis+mysql8 效果图 二、cascadeEasyui.jsp页面 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%String path = request.getContex…

wait notify

文章目录 1. API 介绍2. 怎么使用wait、notify2.1 sleep 和 wait 的区别2.2 sleep 和 wait 的使用模板 1. API 介绍 都属于 Object 对象的方法。必须获得此对象的锁&#xff0c;才能调用这几个方法&#xff0c;只有重量级锁才能调用wait、notify obj.wait() 让进入 object 监…

vue中实现数字+英文字母组合键盘

完整代码 <template><div class"login"><div click"setFileClick">欢迎使用员工自助终端</div><el-dialog title"初始化设置文件打印消耗品配置密码" :visible.sync"dialogSetFile" width"600px&quo…