springboot结合maven配置不同环境的profile方式

作者:年少bu轻狂 时间:2022-05-28 12:00:16 

springboot结合maven配置不同环境的profile

1、在spring-boot中新建配置文件

springboot结合maven配置不同环境的profile方式

spring-boot不同环境配置文件格式为application-{profile}.yml

说明:

如果application.yml中的配置和application-{profile}.yml相冲突时,application.yml中的配置会被覆盖掉。

2、在application.yml中增加属性

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

说明:如果想要获取mvn中设置的属性变量,需要使用@mvn变量名@(该方式为mvn的默认filter方式,

如果想要更改方式,可以配置自定义filter),不能使用${mvn变量名},否则无法获取到

springboot结合maven配置不同环境的profile方式

如果你

3、在pom.xml中添加不同的profile

<profiles>
  <profile>
     <id>dev</id>
     <activation>
        <activeByDefault>true</activeByDefault>
     </activation>
     <properties>
        <!-- default Spring profiles -->
        <spring.profiles.active>dev</spring.profiles.active>
     </properties>
  </profile>
      <profile>
          <id>prod</id>
          <properties>
              <!-- default Spring profiles -->
              <spring.profiles.active>prod</spring.profiles.active>
          </properties>
      </profile>
</profiles>

说明:该配置添加了两个profile,一个dev,一个prod分别对应application-dev.yml和application-prod.yml

4、测试

  • Maven启动,指定mvn中的Profile通过-P,如mvn spring-boot:run -Pdev

  • Maven打包,指定mvn中的Profile通过-P,如mvn package -Pdev -DskipTests

另:

如果想要自定过滤器,可以使用mvn的maven-resources-plugin插件,具体说明参考这里

springboot maven多环境配置

环境

  • 本地环境(dev)

  • 测试环境(test)

  • 预生产环境(pre-pro)

  • 生产环境(pro)

不同环境对应不同的文件夹

SpringBoot有profiles功能的支持,我们将此功能加入进来

1、在resources下创建/dev文件夹

在dev文件夹下创建application.properties和application-dev.properties

在resources下创建dev、teest、pro等文件夹是为了maven打包多环境用的.

在本地开发运行时需要在resources下创建一个和打包环境文件夹里相同的文件,因为profiles原因所以需要,创建dev、test、pro是为maven打包用的,而在resources下创建相关文件是为了多功能环境开发或者调试用的

#application.properties文件内容
spring.profiles.active=dev
------------------------分割线----------------------------
#application-dev.properties文件内容
#数据库相关配置
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
具体配置各求所需,这里就不一一列举了

测试和生产大同小异,同上只需修改配置值即可,dev对应本地配置、test对应测试配置、pro对应生产配置

application-xx.properties 为固定写法,比如application-test.properties就是测试环境配置文件的命名

2、在pom.xml文件加入相关配置如下

此配置加入到 < build > 标签里

<resources>
<resource>
<directory>src/main/resources</directory>
<!-- 资源根目录排除各环境的配置,使用单独的资源目录来指定 -->
<excludes>
<exclude>pro/*</exclude>
<exclude>dev/*</exclude>
<exclude>test/*</exclude>
<!--
  因为配置profiles原因,我们在打包不希望将如下文件打包进去,所以打包时注释掉即可
  如果是本地开发运行需要去掉注释
           -->
<!--<exclude>application-pro.properties</exclude>-->
<!--<exclude>application-test.properties</exclude>-->
<!--<exclude>application-dev.properties</exclude>-->
</excludes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources/${profiles.active}</directory>
</resource>
</resources>
#profiles配置和<build>同级
<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>

然后选中对应的环境执行maven相关操作即可,博主用的IDEA

springboot结合maven配置不同环境的profile方式

如果您用的是eclipse的话,执行maven命令即可,如:就是打包pro环境

来源:https://blog.csdn.net/jisu30miao1225/article/details/80745035

标签:springboot,maven,配置,profile
0
投稿

猜你喜欢

  • Java开发中可以防止界面假死的刷新代码

    2023-11-23 22:23:41
  • 详解java IO流之缓冲流的使用

    2023-08-08 18:33:16
  • java 使用idea将工程打成jar并创建成exe文件类型执行的方法详解

    2022-12-07 02:49:30
  • Java裁剪压缩PNG图片,透明背景色变黑的解决方案

    2023-11-25 13:21:27
  • iOS实现从背景图中取色的代码

    2023-07-06 15:18:32
  • 基于Spring整合mybatis的mapper生成过程

    2022-01-11 03:49:26
  • Springboot 整合RabbitMq(用心看完这一篇就够了)

    2023-11-23 05:27:17
  • java之路径分隔符介绍

    2022-12-14 22:35:23
  • 详解Java注解的实现与使用方法

    2023-10-31 12:33:20
  • Java虚拟机内存区域划分详解

    2023-06-20 22:04:24
  • springboot ErrorPageFilter的实际应用详解

    2023-11-24 01:02:59
  • Java实现map转换成json的方法详解

    2022-09-09 12:26:03
  • Java语言多线程终止中的守护线程实例

    2023-11-25 07:48:52
  • C++实现图书管理系统

    2023-11-03 03:00:35
  • Java内存模型JMM与volatile

    2022-03-25 09:33:50
  • 详解Spring Bean 之间的特殊关系

    2022-10-25 21:12:17
  • springboot异常处理的基本规范

    2023-11-23 15:48:19
  • Java并发编程之volatile与JMM多线程内存模型

    2023-10-19 12:13:48
  • 在IDEA里gradle配置和使用的方法步骤

    2023-11-23 16:07:58
  • SpringSecurity解决POST方式下CSRF问题

    2023-07-18 18:59:51
  • asp之家 软件编程 m.aspxhome.com