IDEA+Maven_POM.xml的Profile来动态切换配置信息

IDEA+Maven_POM.xmlProfile来动态切换配置信息

前言:

通常开发人员,需要面对不同的编码环境, 如果频繁修改配置文件的话,可能会忙中出错。

例如环境有: 开发环境、测试环境、生产环境。

使用Maven的打包插件可以进行动态切换使用那些配置文件进行打包或者运行!

1.0 build节点里面重要节点介绍

mavenpom.xml文件中build节点用来管理执行maven声明周期的(也就是打包)。

1.1 <finalName>节点

表示最终打包完成后, 包的名称

1.2 <plugins>节点 (重要点)

用来设置执行打包命令插件、资源文件的字符集等 (例如也maven-clean-plugin(清理)、maven-compiler-plugin(编译)、maven-resources-plugin(不同目的显式更改编码), 等等自行网上搜索。 )

1.3 resources节点

1.3.1 directory节点(指定配置文件目录)

默认情况下,Maven将在src / main / resources下查找项目的资源,

但是,您的所有资源可能都不在src / main / resources中。因此,您必须通过将以下内容添加到POM中来指定这些目录。

<build>
   ...
   <resources>
     <resource>
       <directory>资源文件夹路径(假设你resources文件夹放在了src下面 就写成  src/resources)</directory>
     </resource>
   </resources>
   ...
 </build>

此外,可以通过添加多个<resource>节点来拥有多个目录:

1.3.2 filtering节点

进行变量过滤, 变量可以包含在您的资源中。这些变量用$ {...}分隔符表示,可以来自系统属性,项目属性,过滤器资源和命令行。

例如,如果有一个配置文件资源src / main / resources / application.yml包含

server:
  port: ${port}

pom文件

<project>
  ...
  <port>8888</port>
  ...
  <build>
    ...
    <resources>
      <resource>
        <directory>src/main/resources</directory>
      </resource>
      ...
    </resources>
    ...
  </build>
  ...
</project>

这样直接打包的换, 打包好的application.yml配置文件会原样输出${port}

但是,如果将<filtering>标记添加到POM并将其设置为true,如下所示:

<resource>
    <directory>src/main/resources</directory>
    <filtering>true</filtering>
 </resource>

这样打包完成后application.yml配置文件中的端口就会是8888

1.3.3 includes节点与excludes节点

指定资源目录时,可能不会使用该目录中的每个文件。因此,我们可能只需要指定要包含的文件或指定要排除的文件。

要包含资源,我们只需要添加一个<includes>节点 , 排除添加<excludes>节点

<build>
       ......
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>*.yml</include>
                </includes>
                <excludes>
                    <exclude>logback-spring.xml</exclude>
                </excludes>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>

上面节点说明: 将resources所有后缀带yml的进行打包入jar包 , 排除logback-spring.xml不进行打包入jar包。

includesexcludes节点可以配置多个。

节点就介绍到这, 下面进行一个Demo配置入门。

2.0 IDEA配置SpringBoot配合Maven_Profiles动态切换配置文件

2.1 先准备好3个环境的配置文件

在resources配置文件目录下准备3个文件: application-dev.ymlapplication-test.ymlapplication-pro.yml

内容就只是端口不同:

#-dev.yml开发端口
server:
  port: 18888
#-test.yml测试环境端口
server:
  port: 8080
#-pro.yml生产环境端口
server:
  port: 80

2.2 pom文件配置

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!--动态切换配置文件 resources-plugin插件是必选的-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.1.0</version>
                <!--使用默认的变量分割符即${}-->
                <configuration>
                    <useDefaultDelimiters>true</useDefaultDelimiters>
                </configuration>
            </plugin>
        </plugins>

        <resources>
            <resource>
                <!--打包该目录下的 application.yml 和先排除掉所以的环境配置文件-->
                <directory>src/main/resources</directory>
                <includes>
                    <include>application.yml</include>
                </includes>
                <excludes>
                    <exclude>application-pro.yml</exclude>
                    <exclude>application-dev.yml</exclude>
                    <exclude>application-test.yml</exclude>
                </excludes>
                <!-- 启用过滤 即该资源中的变量将会被过滤器中的值替换 -->
                <filtering>true</filtering>
            </resource>

            <resource>
                <directory>src/main/resources</directory>
                <!--  打包导入选择的环境文件${profiles.active} 优先级比排除上面排除大 -->
                <includes>
                    <include>application-${profiles.active}.yml</include>
                </includes>
                <!--   不进行过滤   -->
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>

    <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>

<profiles.active> 是自定义, 但是配置环境的3个名称节点都需要相同

然后在主application.yml文件中加上

spring:
  application:
    name: SpringBootDemo
  profiles:
    active: ${profiles.active} #取其变量加载配置文件

2.3 在工具IDEA中选择使用那个配置文件

选择那个文件来进行启动与打包

aylaxe.jpg

2.4 选择了dev启动项目与进行打包

在这里插入图片描述

2.5 选择了pro启动项目与进行打包

在这里插入图片描述

如果出现了确定发现使用的不是选择的配置类, 则执行清理target编译过的文件夹或者执行maven_clean命令清理,在重复进行操作。

1

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

懵懵懂懂程序员

如果节省了你的时间, 请鼓励

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

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

打赏作者

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

抵扣说明:

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

余额充值