springcloud多环境部署打包 - maven 篇

2023-12-13 04:00:35

背景

在使用 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中。

文章来源:https://blog.csdn.net/s_ongfei/article/details/134834091
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。