IDEA POM文件配置profile实现不同环境切换

目录

一、背景

二、实现

2.1创建不同的配置文件

2.2配置POM文件

三、效果

3.1本地使用

 2.2线上或者测试环境使用


一、背景

在企业级开发中,为了不影响生产环境的项目运行,一般情况下都会划分生产环境、测试环境、开发环境。不同环境可以配置不同的数据库、redis连接,这样在开发新功能的时候就不会影响线上环境。

二、实现

2.1创建不同的配置文件

application.yml

spring:
  profiles:
    active: '@profiles.active@'

application-dev.yml

# 应用服务 WEB 访问端口
server:
  port: 8081

#数据库连接
spring:
  datasource:
    #配置自己的账户密码
    username: xxx
    password: xxx
    url: jdbc:mysql://127.0.0.1:3306/my_app
    driver-class-name: com.mysql.cj.jdbc.Driver




 application-test.yml

# 应用服务 WEB 访问端口
server:
  port: 8081

#数据库连接
spring:
  datasource:
    #配置自己的账户密码
    username: xxx
    password: xxx
    url: jdbc:mysql://127.0.0.1:3306/my_app
    driver-class-name: com.mysql.cj.jdbc.Driver




 application-prod.yml

# 应用服务 WEB 访问端口
server:
  port: 8081

#数据库连接
spring:
  datasource:
    #配置自己的账户密码
    username: xxx
    password: xxx
    url: jdbc:mysql://127.0.0.1:3306/my_app
    driver-class-name: com.mysql.cj.jdbc.Driver




dev,test,prod可以分别配置不同的地址,以实现连接不同的数据库。

2.2配置POM文件

<project>
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <!--①移除全部配置文件-->
                <excludes>
                    <exclude>application*.yml</exclude>
                </excludes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <!--②将所需的配置文件移入-->
                <filtering>true</filtering>
                <includes>
                    <include>application.yml</include>
                    <include>application-${profiles.active}.yml</include>
                </includes>
            </resource>
        </resources>
    </build>

    <!-- 环境 -->
    <profiles>
        <profile>
            <!--不同环境Profile的唯一id-->
            <id>dev</id>
            <properties>
                <!--profiles.active是自定义的字段(名字随便起),自定义字段可以有多个-->
                <profiles.active>dev</profiles.active>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <profile>
            <id>prod</id>
            <properties>
                <profiles.active>prod</profiles.active>
            </properties>
        </profile>
        <profile>
            <id>test</id>
            <properties>
                <profiles.active>test</profiles.active>
            </properties>
        </profile>
    </profiles>


</project>

配置文件里面有一小块移除配置文件的代码

如果将该代码注掉,那么在打包项目的时候就会把全部配置文件都打包进去,这样拿到jar包之后就可以在启动项目的时候通过传入不同的参数来使用不同的配置文件启动项目,有点不安全。

如果不注掉的话,就会把全部配置文件都移除,在下方把指定的要打包的配置文件引入,这样获得的jar包就只能启动打包时候指定的配置文件,尝试使用其他配置文件会获取不到而报错。(建议)

三、效果

3.1本地使用

先在项目右上角的Profiles选中想要启动的环境,然后启动项目,端口和设置的配置文件匹配。

换个配置文件试试,端口和配置的文件也匹配,也是没问题。

PS:一般情况下,切换环境最好点一下下方的clean,先清一下缓存配置。可能是现在配置少,现在本地不clean也没问题,但在企业开发中如果不clean一下,启动项目大概率是会报错的。

 2.2线上或者测试环境使用

线上或者测试环境一般都用jekins来自动化打包运行项目,也就是通过脚本去自动运行项目。

我们可以在项目目录,通过命令行去打包项目mvn package -P 环境

mvn package -P prod   

 打包完成之后会在项目目录下面生产一个target文件夹,里面有一个jar文件,这个文件就是打包的项目文件。(如果项目设置的打包是war的话,也可能是war文件。)

我们去到jar文件所在目录,通过命令行运行jar文件

启动了8082端口,也正是prod文件配置的端口,验证完毕。

因为我前面是开启了配置文件过滤的,验证一下用其他配置文件启动该jar包。(找不到配置文件而报错,安全性得到了保障)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu安裝Avahi发现服务工具

一、简介 解决设置固定ip后无法连接外网的问题&#xff0c;目前采用动态获取ip&#xff0c;可以不用设置设备的固定IP&#xff0c;直接可以通过域名来访问设备&#xff0c;类似树莓派的连接调试 二、安装 本文使用的是ubuntu23.10.1上安装 1.安装工具 sudo apt install av…

ABAP - SALV教程17 弹窗ALV

SALV可以通过弹窗形式打开在生成SALV实例对象后调用set_screen_popup方法设置成弹出模式 "设置为弹窗模式 go_alv->set_screen_popup( start_column 10end_column 110start_line 5end_line 15). 显示效果 完整代码 SELECT *FROM ekkoINTO TABLE DATA(gt_dat…

使用plasmo框架开发浏览器插件,注入contents脚本和给页面添加UI组件

plasmo&#xff1a;GitHub - PlasmoHQ/plasmo: &#x1f9e9; The Browser Extension Framework plasmo是一个开发浏览器插件的框架&#xff0c;支持使用react和vue等技术&#xff0c;而且不用手动管理manifest.json文件&#xff0c;框架会根据你在框架中的使用&#xff0c;自…

二极管原理及典型应用电路、三极管基本结构及类型状态

目录 二极管原理及典型应用电路 二极管的工作原理 二极管保护电路 二极管整流电路 二极管稳压电路 三极管基本结构及类型状态 三极管基本结构和类型 三极管的 3 种工作状态 二极管原理及典型应用电路 如下图&#xff0c;二极管长成这样。它们通常有一个黑色圆柱体&am…

力扣刷题笔记

力扣206 反转链表 题目描述: 给你单链表的头节点head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1] 示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&#xff1a;[…

抖音视频评论批量下载软件|抖音数据抓取工具

随着业务需求的增长&#xff0c;抖音视频的下载需求也日益增加。传统的方式是通过逐个复制粘贴分享链接来下载视频&#xff0c;这种操作效率低下且耗时费力。为了解决这一问题&#xff0c;我们开发了一款基于C#的抖音视频评论批量下载软件&#xff0c;旨在实现通过关键词自动批…

STM32(5) GPIO(2)输出

1.点亮LED 1.1 推挽接法和开漏接法 要想点亮LED&#xff0c;有两种接法 推挽接法&#xff1a; 向寄存器写1&#xff0c;引脚输出高电平&#xff0c;LED点亮&#xff1b;向寄存器写0&#xff0c;引脚输出低电平&#xff0c;LED熄灭。 开漏接法&#xff1a; 向寄存器写0&…

【大厂AI课学习笔记NO.64】机器学习开发框架

机器学习开发框架本质上是一种编程库或工具&#xff0c;目的是能够让开发人员更容易、更快速地构建机器学习模型。 机器学习开发框架封装了大量的可重用代码&#xff0c;可以直接调用&#xff0c;目的是避免“重复造轮子’大幅降低开发人员的开发难度&#xff0c;提高开发效率…

Spark(2)-基础tranform算子(一)

一、算子列表 编号名称1map算子2flatMap算子3filter算子4mapPartitions算子5mapPartitionsWithIndex算子6keys算子7values算子8mapValues算子9flatMaplValues算子10union算子11reducedByKey算子12combineByKey算子13groupByKey算子14foldByKey算子15aggregateByKey算子16Shuff…

计算机网络-网络安全(一)

1.网络安全威胁和漏洞类型&#xff1a; 窃听 假冒 重放 流量分析 破环完整 病毒 木马 诽谤 非授权访问 拒绝服务 漏洞&#xff1a;物理、软件、不兼容、其他等。 2.网络安全信息数据五大特征&#xff1a; 完整性&…

kettle下载及安装

JDK下载 安装kettle之前需要安装JDK JDK下载链接&#xff1a;JDK下载 配置环境变量&#xff1a; 新建系统变量&#xff1a;变量值为JDK安装路径 Path新增&#xff1a; kettle下载 链接地址&#xff1a;PDI&#xff08;kettle&#xff09; 点击下载 同意 Click here to a…

模拟集成电路设计:Bandgap电路设计及版图实现

模拟集成电路设计 Bandgap电路设计及版图实现 一、目的&#xff1a; 1、熟悉模拟集成电路设计的基本流程&#xff0c;实现Bandgap电路设计&#xff1b; 2、熟悉Linux系统及Cadence Virtuoso icfb设计、仿真软件的使用方法。 二、原理&#xff1a; 1、设计目标&#xff1a;…

Vmware esxi虚拟主机状态无效,无法注销重启等操作修复解决

问题 装有ESXI系统的服务器在强制关机启动后&#xff0c;显示虚拟机状态是无效的&#xff0c;并且无法进行任何操作。 解决办法 对出问题的虚拟机重新注册 1、开启esxi系统的ssh功能 2、取消注册出问题的虚拟机 找到问题的虚拟机 [rootlocalhost:~] vim-cmd vmsvc/getal…

基于JavaWeb实现的药店管理系统

一、系统架构 前端&#xff1a;jsp | layui | jquery | css 后端&#xff1a;spring | springmvn | mybatis 环境&#xff1a;jdk1.8 | mysql 二、代码及数据库 三、功能介绍 01. 登录 02. 首页 03. 药品管理 04. 销售管理-销售记录管理 05. 销售管理-退…

AI蠕虫病毒威胁升级,揭示AI安全新危机

一组研究人员成功研发出首个能够通过电子邮件客户端窃取数据、传播恶意软件以及向他人发送垃圾邮件的AI蠕虫&#xff0c;并在使用流行的大规模语言模型&#xff08;LLMs&#xff09;的测试环境中展示了其按设计功能运作的能力。基于他们的研究成果&#xff0c;研究人员向生成式…

Unreal触屏和鼠标控制旋转冲突问题

Unreal触屏和鼠标控制旋转冲突问题 鼠标控制摄像机旋转添加Input轴计算旋转角度通过轴事件控制旋转 问题和原因问题原因 解决办法增加触摸控制旋转代码触屏操作下屏蔽鼠标轴响应事件 鼠标控制摄像机旋转 通过Mouse X和Mouse Y控制摄像机旋转。 添加Input轴 计算旋转角度 通过…

Python推导式大全与实战:精通列表、字典、集合和生成器推导式【第115篇—python:推导式】

Python推导式大全与实战&#xff1a;精通列表、字典、集合和生成器推导式 Python语言以其简洁、优雅的语法而闻名&#xff0c;其中推导式是其独特之处之一。推导式是一种在一行代码中构建数据结构的强大方式&#xff0c;它涵盖了列表、字典、集合和生成器。本篇博客将全面介绍…

Python实现BIAS工具判断信号:股票技术分析的工具系列(4)

Python实现BIAS工具判断信号&#xff1a;股票技术分析的工具系列&#xff08;4&#xff09; 介绍算法解释 代码rolling函数介绍完整代码data代码BIAS.py 介绍 在股票技术分析中&#xff0c;BIAS&#xff08;乖离率&#xff09;是一种常用的技术指标&#xff0c;用于判断股票价…

sparse transformer 常见稀疏注意力

参考&#xff1a; https://zhuanlan.zhihu.com/p/259591644 主要就是降低transformer自注意力模块的复杂度 复杂度主要就是 Q K^T影响的&#xff0c;稀疏注意力就是在Q点乘K的转置这模块做文章 下列式一些sparse transformer稀疏注意力方法 a、transformer原始的 &#xff0…

文献阅读:The Unreasonable Effectiveness of Easy Training Data for Hard Tasks

文献阅读&#xff1a;The Unreasonable Effectiveness of Easy Training Data for Hard Tasks 1. 文章简介2. 方法介绍 1. 数据集难易度分析2. 模型训练前后变化 3. 实验考察 & 结论 1. 实验设计 1. 使用数据集2. 使用模型 2. 实验结果 1. 数据集难度分析2. 在Easy数据集下…