• (十一)Maven之profile实现多环境配置动态切换


    原文链接:https://www.cnblogs.com/zeng1994/p/a442108012ffd6a97b22c63055b48fe9.html

    一、多环境配置文件的放置

     将不同环境下的配置文件按照文件夹来划分,但需要保证配置文件的文件名在不同环境下必须一致
    • development:开发环境
    • testing:测试环境
    • production:生产环境
        配置文件分文件夹后的效果如下图

    二、pom文件的配置

    (1)配置profile
            在pom文件中配置不同的profile。profile里面id标签为这个profile的名字,properties标签的内容为这个profile里面的参数。
            我们配置profile的参数为:  profiles.active=对应环境文件夹名字   
            这样在打包资源文件时,通过激活不同的profile来拿取profiles.active的值所对应的文件夹进行打包。
    代码如下:
     <profiles>
            <profile>
                <!-- 开发环境 -->
                <id>development</id>
                <properties>
                    <profiles.active>development</profiles.active>
                </properties>
                <activation>
                    <activeByDefault>true</activeByDefault>
                </activation>
            </profile>
            <profile>
                <!-- 测试环境 -->
                <id>testing</id>
                <properties>
                    <profiles.active>testing</profiles.active>
                </properties>
            </profile>
            <profile>
                <!-- 生产环境 -->
                <id>production</id>
                <properties>
                    <profiles.active>production</profiles.active>
                </properties>
            </profile>
        </profiles>
    

      

    通过<activeByDefault>true</activeByDefault>设置默认激活的profile
    (2)配置maven资源文件打包规则
            打包资源文件时,需要通过profile里面的profiles.active的值来切换不同环境的资源文件。具体的配置见下面代码
    <resources>
                <resource>
                    <directory>src/main/resources</directory>
                    <!-- 这个filter必须要设为true, 把所有文件都过滤掉,然后下面再手动include,一个一个文件夹自己添加 -->
                    <filtering>true</filtering>
                    <includes>
                        <include>spring/*</include>
                    </includes>
                </resource>
                <resource>
                    <!-- 这里会直接把${profiles.active}对应文件夹下的内容打包到classpath下 -->
                    <directory>src/main/resources/${profiles.active}</directory>
                </resource>
            </resources>
    
    关于maven的resource可以参考这篇文章:https://blog.csdn.net/feicongcong/article/details/78833618
            特别关注下<includes><directory>的作用
            这里由于用了<directory>src/main/resources/${profiles.active}</directory>,它是把${profiles.active}对应文件夹下的内容打包到classpath下面了,所以读取${profile.active}文件夹下的propertis文件的路径为 classpath:xxx.properties

    三、如何在Spring配置文件中读取这些不同环境下的propertis文件

    <bean id="propertyConfig"  
    
              class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
    
            <property name="locations">  
    
                <list>
    
                    <value>classpath:redis-config.properties</value>
    
                    <value>classpath:dubbo-client.properties</value>
    
                    <value>classpath:rabbitmq-config.properties</value>
    
                </list> 
    
            </property>  
    
        </bean>
    

      

    四、如何打包

    mvn package –P 这里填你的profile的id值  
            特别注意:P是大写的

     

  • 相关阅读:
    C#遍历DataSet中数据的几种方法总结
    ajax跨域访问控制
    几种数据库的大数据批量插入(SqlServer、Oracle、SQLite和MySql)
    转:InnoDB多版本(MVCC)实现简要分析
    转:InnoDB Page Structure(InnoDB页面结构详解)
    PostgreSQL 数据库角色
    PostgreSQL 9.5 客户端认证
    PostgreSQL服务器参数配置
    转:InnoDB Log Block Structure(InnoDB日志Block结构详解)
    转:InnoDB Crash Recovery 流程源码实现分析
  • 原文地址:https://www.cnblogs.com/lvchengda/p/13030992.html
Copyright © 2020-2023  润新知