• Maven——采用profile设定不同的开发环境切换


    前言

    在实际项目开发过程中,往往会有不同的开发环境,如:开发环境测试环境预生产环境生产环境等。

    通常在不同的开发环境中,针对项目的配置信息可能不同,比如nacos 注册与配置中心地址group分组等。

    此时如果没有一个安全、稳定、可靠的各个环境配置文档,会导致开发和bug修复、问题分析等切换很麻烦,也有可能会配置出错,导致问题解决时间的浪费。

    接下来就简单说明采取profile设定不同的开发环境和环境切换的操作。

    环境设定

    关于环境的配置,分为全局配置局部配置

    • 全局配置:
      修改maven路径/conf/settings.xml的内容。增加profiles配置信息,对所有maven项目生效,如:
      <profiles>
      	<profile>
      		<id>alimavenid>
              <repositories>
                  <repository>
                      <id>alimavenid>
                      <url>http://maven.aliyun.com/nexus/content/groups/public/url>
                      <releases>
                          <enabled>trueenabled>
                      releases>
                      <snapshots>
                          <enabled>trueenabled>
                          <updatePolicy>neverupdatePolicy>
                      snapshots>
                  repository>
              repositories>
          profile>
      profiles>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
    • 局部配置:在对应项目中增加profile设定,只对当前项目环境生效。

    下面开始介绍局部配置

    配置profile

    博客的编写,只展示两个环境开发环境测试环境,其他环境配置可根据实际项目的开发进行自我设定。

    pom.xml文件中,编写profiles节点内容,如下所示:

    
    <profiles>
        
        <profile>
            <id>devid>
            <properties>
                <profiles.active>devprofiles.active>
                <nacos.address>192.168.60.72:8848nacos.address>
                <nacos.discovery.group>DEFAULT_GROUPnacos.discovery.group>
                <nacos.discovery.namespace>publicnacos.discovery.namespace>
                <nacos.config.group>DEFAULT_GROUPnacos.config.group>
                <nacos.config.namespace>publicnacos.config.namespace>
            properties>
        profile>
        
        <profile>
            <id>sitid>
            <properties>
                <profiles.active>sitprofiles.active>
                <nacos.address>127.0.0.1:8848nacos.address>
                <nacos.discovery.group>DEFAULT_GROUPnacos.discovery.group>
                <nacos.discovery.namespace>sit-testnacos.discovery.namespace>
                <nacos.config.group>DEFAULT_GROUPnacos.config.group>
                <nacos.config.namespace>sit-testnacos.config.namespace>
            properties>
            
            <activation>
                <activeByDefault>trueactiveByDefault>
            activation>
        profile>
    profiles>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    profile节点中有三个参数信息,这几个参数的含义如下所示:

    节点名称含义
    id配置环境名称(唯一)
    properties指定配置属性内容,其中的名称可以随便定义
    activation设置当前profile环境是否为默认环境

    配置build(注意点)

    如果在pom.xml中,未增加build的配置项,则导致 Profiles 配置项失效。

    <build>
            <finalName>spring-securityfinalName>
            <plugins>
                <plugin>
                    <groupId>org.springframework.bootgroupId>
                    <artifactId>spring-boot-maven-pluginartifactId>
                    <configuration>
                        <fork>truefork>
                        <addResources>trueaddResources>
                    configuration>
                plugin>
            plugins>
            <resources>
                <resource>
                    <directory>src/main/resourcesdirectory>
                    <filtering>truefiltering>
                resource>
            resources>
        build>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    application/bootstrap.yml文件中的使用

    当设定好了profile配置信息后,在idea的maven栏中可以看到对应的设置信息,如下图:
    在这里插入图片描述
    此时需要在需要随环境进行配置变更的地方,使用${xxxx}进行替换。

    如:修改bootstrap,yml中的配置项:

    server:
      port: 4201
      servlet:
        context-path: /api
    spring:
      main:
        allow-bean-definition-overriding: false
      profiles:
        active: ${profiles.active}
      application:
        name: test-service
    
      # nacos 分布式配置
      cloud:
        nacos:
          discovery:
            server-addr: ${nacos.address}
            group: ${nacos.discovery.group}
            namespace: ${nacos.discovery.namespace}
          config:
            server-addr: ${nacos.address}
            group: ${nacos.config.group}
            namespace: ${nacos.config.namespace}
            file-extension: yml
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    根据idea中maven栏选择的profiles环境信息,会将对应profiles -> profile的内容进行${xxx}替换。

    如果需要打包,可以采取如下指令:

    mvn clean package -Psit

    2022.10.28 额外注意点

    yml中使用@变量名@的方式。

    properties中使用${变量名}的方式配置。

    上面的是公司封装的组件,改了源码,如果使用官方的,则需要按照规则来。

  • 相关阅读:
    无需编写一行代码,实现任何方法的流量防护能力
    【学习草稿】
    408 | 【数据结构】 排序 —— 总复习框架总结
    mybatis-plus update详解
    基于Python实现心脏病数据可视化DEA+预测【500010103.1】
    Docker从入门到上天系列第四篇:docker平台入门图解与平台架构图解
    光伏无人机勘探技术应用分析
    Linux进程终止
    【CodeForces】CF1327D Infinite Path
    Spring 源码阅读 74:事务管理的原理 - BeanFactoryTransactionAttributeSourceAdvisor 分析
  • 原文地址:https://blog.csdn.net/qq_38322527/article/details/126638353