利用maven的profile功能直接打包不同环境的配置文件(附例子下载)

摘要: 最近刚接手一个历史遗留的应用,打包的时候采用了很古老的方式,用maven 打包成war包,然后到生产环境解压之后,逐个替换配置文件中的值,但这个应用是分布式的,是有几个小应用组成的,所以一旦修改配置文件,得分别到几个应用里面修改。而且几个系统有依赖关系的。毕竟是分布式部署的。姑且不管如何部署,就修改配置文件这点来说,我就不满意了。因为产品生产环境也是我们自己可以控制的,所以完全可以在打包前就准备好。但由于生产环境与开发环境的配置是不一样的。所以完全可以提前准备好需要变化的值作为属性,在打包时去替换配置文件中的变量就好了,maven 的  profile 就具备这样的功能,所以做了一个例子,给team 成员,让他们去效仿完成.

最近刚接手一个历史遗留的应用,打包的时候采用了很古老的方式,用maven 打包成war包,然后到生产环境解压之后,逐个替换配置文件中的值,但这个应用是分布式的,是有几个小应用组成的,所以一旦修改配置文件,得分别到几个应用里面修改。而且几个系统有依赖关系的。毕竟是分布式部署的。姑且不管如何部署,就修改配置文件这点来说,我就不满意了。因为产品生产环境也是我们自己可以控制的,所以完全可以在打包前就准备好。但由于生产环境与开发环境的配置是不一样的。所以完全可以提前准备好需要变化的值作为属性,在打包时去替换配置文件中的变量就好了,maven 的 profile 就具备这样的功能,所以做了一个例子,给team 成员,让他们去效仿完成.

在profile下建立几个文件夹,分别代表dev,sit,uat等环境用到的参数,配置在config.properties 文件中. 用这些配置去替换 src/main/resources/ 中的配置文件



src/main/resources/ 中的配置文件

# database connection configurations
driverClassName=${driverClassName}
validationQuery=${validationQuery}
#DEVELOP
jdbc_url=${jdbc_url}
jdbc_username=${jdbc_username}
jdbc_password=${jdbc_password}


看 maven 的配置 pom.xml

  4.0.0
  com.isprint
  mavenReplaceTest
  war
  0.0.1-SNAPSHOT
  mavenReplaceTest Maven Webapp
  http://maven.apache.org
   
        UTF-8
    

    
        
            log4j
            log4j
            1.2.16
        
    

    
    
        
            dev
            
            
                true
            
                           
                dev
            
            
                                    
                    profiles/${build.profile.id}/config.properties
                
                                    
                    
                        true
                        src/main/resources
                        
                        
                    
                
            
        
        
            test
                          
                test
            
            
                                   
                    profiles/${build.profile.id}/config.properties
                
                                   
                    
                        true
                        src/main/resources                       
                    
                
            
        
        
    

    
        maven-properties-filtering
        
            
            
                org.apache.maven.plugins
                maven-assembly-plugin
                2.2.1
                
                
                    
                    
                        src/main/assembly/assembly.xml
                    
                
            
            
            
                org.apache.maven.plugins
                maven-jar-plugin
                2.3.1
                
                
                    
                    
                        
                        
                            
                            true
                            
                            lib/
                            
                            HelloWorldApp
                        
                    
                
            
        
    



在里面配置了 profiles, 分别为击中环境做了配置,其中默认了是dev , 所以如果在没有制定采用哪种环境的情况下,是用dev 的配置文件去替换,所以要注意.

采用这种方式,配置适当的 resources 以及filter ,include, exclude ,几乎可以对任何文件做替换,一般常用的是 .properties, xml 文件,甚至 java 源代码都可以替换.

提供源代码下载:
maven replace properties files.

上一篇: 一个人的陌生都市--思绪乱飞
下一篇: 博客被攻击, 有意义吗,一个个人小博客而已
 评论 ( What Do You Think )
名称
邮箱
网址
评论
验证
   
 

 


  • 微信公众号

  • 我的微信

站点声明:

1、一号门博客CMS,由Python, MySQL, Nginx, Wsgi 强力驱动

2、部分文章来源于互联网, 若有侵权, 联系邮箱:summer@yihaomen.com, 同时欢迎大家注册用户,主动发布文章.

3、鄂ICP备14001754号-3, 鄂公网安备 42280202422812号