使用maven profile配置实现项目多环境开发

前言

在开发过程中,我们的项目通常有开发(dev)、测试(test)、生产(prod)等三种环境,而在不通的项目环境中,配置的内容往往是不一样的,比如测试的数据库配置与生产的数据库配置。而来回改动配置文件也会加大我们的工作量,也容易出错,因此,可以利用maven profile配置来解决这个问题。

1、profile基本配置

<profiles>
        <profile>
            <id>dev</id>
            <properties>
                <spring.profiles.active>dev</spring.profiles.active>
            </properties>
            <build>
                <resources>
                    <resource>
                        <!--目录-->
                        <directory>src/main/resources</directory>
                        <!--过滤-->
                        <filtering>true</filtering>
                        <!--包含-->
                        <includes></includes>
                        <!--排除-->
                        <excludes>
                            <exclude>application-prod.yml</exclude>
                            <exclude>application-test.yml</exclude>
                        </excludes>
                    </resource>
                </resources>
            </build>
            <!--没有指定其他profile为激活状态时,该profile就默认会被激活-->
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <profile>
            <id>test</id>
            <properties>
                <spring.profiles.active>test</spring.profiles.active>
            </properties>
            <build>
                <resources>
                    <resource>
                        <!--目录-->
                        <directory>src/main/resources</directory>
                        <!--过滤-->
                        <filtering>true</filtering>
                        <!--包含-->
                        <includes></includes>
                        <!--排除-->
                        <excludes>
                            <exclude>application-prod.yml</exclude>
                            <exclude>application-dev.yml</exclude>
                        </excludes>
                    </resource>
                </resources>
            </build>
        </profile>
        <profile>
            <id>prod</id>
            <properties>
                <spring.profiles.active>prod</spring.profiles.active>
            </properties>
            <build>
                <resources>
                    <resource>
                        <!--目录-->
                        <directory>src/main/resources</directory>
                        <!--过滤-->
                        <filtering>true</filtering>
                        <!--包含-->
                        <includes></includes>
                        <!--排除-->
                        <excludes>
                            <exclude>application-dev.yml</exclude>
                            <exclude>application-test.yml</exclude>
                        </excludes>
                    </resource>
                </resources>
            </build>
        </profile>
    </profiles>

2、项目目录结构

在这里插入图片描述

3、文件内容

3.1、

application.yml

spring:
  profiles:
    active: dev

application-dev.yml

server:
  port: 9900
test:
  value: dev

application-test.yml

server:
  port: 9900
test:
  value: test

application-prod.yml

server:
  port: 9900
test:
  value: pro

4、测试

1、选择环境
在这里插入图片描述
2、修改application.yml配置

spring:
  profiles:
    active: dev

若想切换环境,将application.yml文件中的active设置成相应的名字,并选择对应的profiles即可

@RestController
@RequestMapping("/")
public class HelloController {

    @Value("${test.value}")
    String value;
    
    @GetMapping("value")
    public String getValue(){return value;}
}

5、原理

这里定义了多个profile,每个profile都有唯一的id,也包含properties属性。这里为每个profile都定义一个名为profiles.active的properties,每个环境的值不同。当我们打包项目时,激活不同的环境,profiles.active字段就会被赋予不同的值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值