一. 问题由来

开发环境、测试环境、生产环境--------我们的软件在不同的环境中,系统参数和配置可能会不一样,比如数据源配置、日志文件配置、以及一些软件运行过程中的基本配置,那每次我们将软件部署到不同的环境时,都需要修改相应的配置文件?Maven提供了一种方便的解决这种问题的方案,就是profile功能。

二. Maven实现多环境配置切换的步骤

2.1 定义多环境配置文件

按照不同环境,我们读取不同的配置文件,假设有以下定义:

profile 文件名 配置文件内容
dev application-dev.yml server.port 8090
test application-test.yml server.port 8091
prod application-prod.yml server.port 8092

完成后目录结构如下图所示

2.2 定义运行参数

根据Spring Boot规范,我们修改application.yml文件添加以下内容

而这里我们主要自定义了一个变量${profileActive}

2.3 修改Maven pom配置

修改父工程pom.xml文件,添加以下配置

    
<!--profile配置-->
<profiles>
<profile>
<id>dev</id>
<activation>
<!--默认开启dev配置-->
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<profileActive>dev</profileActive>
</properties>
</profile> <profile>
<id>test</id>
<properties>
<profileActive>test</profileActive>
</properties>
</profile> <profile>
<id>prd</id>
<properties>
<profileActive>prd</profileActive>
</properties>
</profile>
</profiles> <!--编译配置-->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
</plugins> <!--Resource文件编译配置-->
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>application*.yml</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>application-${profileActive}.yml</include>
<include>application.yml</include>
<include>logback.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>

pom多环境配置中我们的核心是利用编译过程中,读取不同的配置文件,然后再由spring去读取参数配置。而这里我们利用到变量${profileActive}

2.4 启动项目以验证

按照以上操作步骤完成后:

1.在开发过程中,我们可以在Maven视图选择你当前的profile。

然后运行,例如当前dev环境配置的系统运行端口是8090。那么启动控制台打印如下信息则表配置成功。

2.在实际生产环境发布的时候,我们运行以下命令即可切换到dev配置

mvn clean package -dev

一分钟学会Spring Boot多环境配置切换的更多相关文章

  1. SpringCloud入门之Spring Boot多环境配置切换指南

    在 spring boot 中,有两种配置文件,一种是application.properties,另一种是application.yml,两种都可以配置spring boot 项目中的一些变量的定义 ...

  2. 嗯,挺全乎儿的,Spring Boot 多环境配置都在这里了,你喜欢哪种?

    持续原创输出,点击上方蓝字关注我 目录 前言 Spring Boot 自带的多环境配置 创建不同环境的配置文件 指定运行的环境 Maven 的多环境配置 创建多环境配置文件 定义激活的变量 pom 文 ...

  3. Spring Boot多环境配置

    在项目开发阶段,开发环境和实际生产环境是不一样,比如使用的数据库/服务连接配置等.因此,配置多个开发环境profile还是必要的 多环境的配置(yml)方式 配置其实很简单,在resource目录下, ...

  4. cxf-rs 、spring 和 swagger 环境配置切换【github 有项目】

    环境切换的目的是 准生产和生产环境切换时,只修改一个文件就可以达到效果 在spring bean 文件中 配置: <bean class="cn.zno.common.context. ...

  5. spring boot多环境配置 直接上代码

    spring:  profiles:    active: test  jackson:    date-format: yyyy-MM-dd HH:mm:ss  datasource:    dri ...

  6. Spring Boot的自动配置原理及启动流程源码分析

    概述 Spring Boot 应用目前应该是 Java 中用得最多的框架了吧.其中 Spring Boot 最具特点之一就是自动配置,基于Spring Boot 的自动配置,我们可以很快集成某个模块, ...

  7. Spring Boot 多环境如何配置

    Spring Boot 开发环境.测试环境.预生产环境.生产环境多环境配置 通常一个公司的应程序可能在开发环境(dev).测试环境(test).生产环境(prod)中运行.那么是不是需要拷贝不同的安装 ...

  8. 【转】spring boot application.properties 配置参数详情

    multipart multipart.enabled 开启上传支持(默认:true) multipart.file-size-threshold: 大于该值的文件会被写到磁盘上 multipart. ...

  9. Spring Boot 2.0 配置图文教程

    摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 本章内容 自定义属性快速入门 外化配置 自动配置 自定义创建 ...

随机推荐

  1. BZOJ 4985: 评分

    二分答案 >=key的记为1 f[i]表示令i位置为1所需要的最少的1的个数 队列模拟 #include<cstdio> #include<algorithm> usin ...

  2. 【Open-Falcon】Linux下安装Open-Falcon

    一.Open-Falcon组件简述 [Open-Falcon绘图相关组件] Agent:  部署在目标机器采集机器监控项 Transfer : 数据接收端,转发数据到后端Graph和Judge Gra ...

  3. poj 2195 最小费用最大流模板

    /*Source Code Problem: 2195 User: HEU_daoguang Memory: 1172K Time: 94MS Language: G++ Result: Accept ...

  4. 利用json实现数据传输

    JSON:JavaScript 对象表示法(JavaScript Object Notation). JSON 是存储和交换文本信息的语法.类似 XML. JSON 比 XML 更小.更快,更易解析. ...

  5. PHP经典面试题目汇总(上篇)

    1.双引号和单引号的区别 双引号解释变量,单引号不解释变量 双引号里插入单引号,其中单引号里如果有变量的话,变量解释 双引号的变量名后面必须要有一个非数字.字母.下划线的特殊字符,或者用{}讲变量括起 ...

  6. Welcome-to-Swift-04集合类型(Collection Types)

    Swift提供了两种集合类型来存放多个值——数组(Array)和字典(Dictionary).数组把相同类型的值存放在一个有序链表里.字典把相同类型的值存放在一个无序集合里,这些值可以通过唯一标识符( ...

  7. SiteMapPath控件的使用(ASP.NET)

    最近在博客里写了一些日志,主要都是我在实际编程过程中遇到的问题.问题出现后,先自己推敲,搞不定的,就上网去搜,再就是请教同学.同事,从中获益匪浅,也很难得!现在把感觉比较实用的一些功能代码之类的发布到 ...

  8. jquery工具方法总结

    $.extend 对象合并,支持深拷贝 $.each 相当于array.each或object.each,可以遍历数组和对象 $.grep 相当于array.filter $.map 相当于array ...

  9. 浅谈getStackTrace()方法(一)

    缘起: 今天看到有一个工具类中有一句: String msgToPrint = Thread.currentThread().getStackTrace()[1].getMethodName(); 输 ...

  10. P1266 速度限制 (最短路,图论)

    题目链接 Solution 在最短路转移的时候在队列或者堆中记录状态为 \(f[u][v]\) 代表上一个节点为 \(u\) ,速度为 \(v\) . 然后按部就班转移即可... Code #incl ...