Maven 不同环境引用不同的依赖和配置

4 篇文章 0 订阅
1 篇文章 0 订阅

在项目开发中可能会产生这样的需求,开发环境依赖于 A 包,测试环境依赖 B 包,生产环境依赖于 C 包。按照我们传统的思维会每个环境注释掉相应的包,然后再打包,一次两次操作还好,操作多了之后这样会很麻烦。

Maven 不同环境引用依赖

Maven 配置

<profiles>
    <!-- 测试环境 -->
    <profile>
        <id>dev</id>
        <!-- 默认激活 dev 环境 -->
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <profiles.active>dev</profiles.active>
        </properties>
        <dependencies>
            <!-- pay_provider -->
            <dependency>
                <groupId>com.allens.test</groupId>
                <artifactId>allens-redis</artifactId>
                <version>1.0-SNAPSHOT</version>
            </dependency>

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
            </dependency>
        </dependencies>
    </profile>

    <!-- 生产环境 -->
    <profile>
        <id>prod</id>
        <properties>
            <profiles.active>prod</profiles.active>
        </properties>
        <dependencies>
            <!-- pay_provider -->
            <dependency>
                <groupId>com.allens.test</groupId>
                <artifactId>allens-redis</artifactId>
                <version>2.0-SNAPSHOT</version>
            </dependency>
        </dependencies>
    </profile>
</profiles>

切换不同环境

在这里插入图片描述
我们可以在idea的Maven窗口中选中需要的profile环境,然后在lifecircle 中 clean install即可。
当然我们也可以使用maven 命令进行打包指定不同环境

## 开发环境打包
mvn clean package -P dev
 
## 测试环境打包
mvn clean package -P test
 
## 生产环境打包
mvn clean package -P pr

最佳实践

① Springboot 热部署插件,在开发环境需要,在测试环境、预发环境、生产环境都是不需要的。
② OceanBase 不同版本适配的不同的操作系统,我们可以借助profile配置不同环境下配置不同的包来做到不同环境切换依赖。

Maven不同环境打包不同配置

和传统的部署方式不同,我们将配置文件放入到不同的目录,使用build>resource来在编译的时候,通过读取不同环境的profiles.active属性来获取不同环境目录下的配置打包到classpath目录中。

  • 传统的配置方式

在这里插入图片描述
传统配置方式会将配置文件放到resources底下,然后给配置文件命名 application-${env}.yml来区分不同环境。在JVM参数中指定-Dspring.active.profiles=${env}或者在idea中:
在这里插入图片描述
或者在 bootstrap.yml 或者application.yml中指定默认的配置:

spring:
  profiles:
    active: ${env}

所有环境的配置都会打包到jar包中。

  • maven通过编译打包确定环境配置

在这里插入图片描述

只有需要的环境配置才会打包到jar包中

maven 配置

<profiles>
    <!-- 测试环境 -->
    <profile>
        <id>dev</id>
        <!-- 默认激活 dev 环境 -->
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <profiles.active>dev</profiles.active>
            <pay.dubbo.version>1.0.0-SNAPSHOT</pay.dubbo.version>
        </properties>
        <dependencies>
            <!-- pay_provider -->
            <dependency>
                <groupId>com.allens.test</groupId>
                <artifactId>common-utils</artifactId>
                <version>1.0-SNAPSHOT</version>
            </dependency>

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
            </dependency>
        </dependencies>
    </profile>

    <!-- 生产环境 -->
    <profile>
        <id>prod</id>
        <properties>
            <profiles.active>prod</profiles.active>
        </properties>
        <dependencies>
            <!-- pay_provider -->
            <dependency>
                <groupId>com.allens.test</groupId>
                <artifactId>common-utils</artifactId>
                <version>1.0-SNAPSHOT</version>
            </dependency>
        </dependencies>
    </profile>
</profiles>

<build>
    <!-- 指定maven编译资源文件位置 -->
    <resources>
        <!-- 编译 src/main/resources 中的资源文件 -->
        <resource>
            <directory>src/main/resources</directory>
        </resource>
        <!-- 根据不同的 mvn 命令参数编译 filters 目录中指定的配置文件 -->
        <resource>
            <directory>src/main/config/${profiles.active}</directory>
            <targetPath>./</targetPath>
        </resource>
    </resources>
</build>

编译后的目录结构

在这里插入图片描述

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

澄风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值