springcloud多环境部署打包 - maven 篇

背景

在使用 springboot 和sringcloud+nacos开发项目过程中,会有多种环境切换,例如开发环境,测试环境,演示环境,生产环境等,我们通过建立多个 yml 文件结合 profiles.active 属性进行环境指定,但是需要打包时就要手动更改配置文件逐个打包,容易造成不必要的误操作,本文就介绍如何进行不同环境配置文件的动态切换及一次性打包多个不同环境的部署包

配置 pom 文件

pom 文件添加 profiles 配置,项目有多少个配置文件,添加多少个子节点,profiles 标签于 parent 标签同级,这样我们就可以在右侧 maven 的配置项中勾选指定的环境

<!-- 配置文件 -->
    <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>
<build>
        <finalName>${project.artifactId}-${project.version}.${project.packaging}</finalName>
        <resources>
            <!-- 代码生成器配置文件过滤 -->
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>bootstrap.yml</include>
                    <include>bootstrap-${profiles.active}.yml</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
</resources>
<plugins>
            <!-- 编译 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <!-- 打包 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.3.2</version>
            </plugin>
        </plugins>

创建多个配置文件

bootstrap.yml      #主配置文件

bootstrap-dev.yml #开发环境配置

......

bootstrap.yml文件内容

spring:
  profiles:
    active: @profiles.active@

bootstrap-dev.yml文件内容

server:
  port: 9041
  servlet:
    context-path: /service
  tomcat:
    uri-encoding: UTF-8
    max-http-form-post-size: -1
spring:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8
  application:
    name: service
  profiles:
    active: @profiles.active@
  main:
    allow-bean-definition-overriding: true
  cloud:
    nacos:
      discovery:
        server-addr: @nacos.server@
        ip: @nacos.discovery@
      config:
        server-addr: @nacos.server@
        file-extension: yaml

打包命令

CMD

mvn clean install -Pdev

idea中启动时选择profiles

总结一下:

网上都是springboot多环境打包的方法,springcloud基本没看到。Spring Boot 默认核心配置文件名为 application,支持 application.propertiesapplication.ymlapplication.yaml。后面两个本质上同一种类型。当三者同时存在时,优先级为:properties > yaml > yml。这个没去验证过,但在springclod项目中,使用了nacos配置,application.yml是不起作用的,项目根本启动不了。

有些文章说 bootstrap.yml 的优先级最高。这种说法是不完全准确的!在springcloud+nacos项目中配置必须写在bootstrap*.yml中,不然启动直接报错,因为大部分配置都在nacose中,yml文件里只有服务器名称和nacos服务器的相关配置,如addr、group及namespace的定义,其它信息都配置在nacos中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是 Spring CloudMaven 依赖示例: ```xml <!-- Spring Cloud Eureka 服务注册和发现组件 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> <!-- Spring Cloud Ribbon 客户端负载均衡组件 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-ribbon</artifactId> </dependency> <!-- Spring Cloud Feign 声明式 REST 客户端 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <!-- Spring Cloud Hystrix 熔断器 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> </dependency> <!-- Spring Cloud Zuul 网关组件 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-zuul</artifactId> </dependency> <!-- Spring Cloud Sleuth 分布式跟踪组件 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-sleuth</artifactId> </dependency> <!-- Spring Cloud Config 配置中心 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> <!-- Spring Cloud Bus 消息总线 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bus-amqp</artifactId> </dependency> ``` 这些依赖项可以根据需要添加到项目Maven 或 Gradle 构建文件中,以使用 Spring Cloud 的功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值