Maven打包时,环境变量替换,并解决spring-boot项目中${}无效的问题

项目中,经常会将多个环境的环境变量分开写到配置文件中,然后通过maven打包是根据当前部署的环境取响应环境的变量。

准备环境变量配置文件

  1. 在项目根目录下准备环境变量"env-test.properties" 和 "env-prod.properties",分别对应生产环境;
  2. 在项目src/main/resources目录下准备“application.properties”文件,程序从application.properties文件中读取环境变量;
  3. “application.properties”文件中,通过 ${} 引用不同环境的环境变量
    如:
# application.properties
wechat.mp.appId=${WECHAT.APPID}
wechat.mp.secret=${WECHAT.SECRET}
wechat.mp.token=${WECHAT.TOKEN}
  1. env-test.properties文件中的环境变量
# env-test.properties
WECHAT.APPID=abc****appid
WECHAT.SECRET=abc****appidSECRET
WECHAT.TOKEN=abc**token
  1. 配置maven插件,在pom.xml文件中

    
    
        env-${env}.properties
    
    
    wechat
    
        

        
        
            org.apache.maven.plugins
            maven-war-plugin
            
                
                    
                        true
                        src/main/webapp/App/www
                        指定include文件的目录
                        
                            services.js
                            user/feature.js
                        
                    
                
            
        
    
    
    
        
            src/main/resources
            
                application.properties
            
            true
        
    

  1. 需要注意的是, 只能替换配置文件中的环境变量;若需要替换war包中js或者html等的环境变量,需要使用 maven-war-plugin 插件

  2. 若项目使用了 spring-boot-starter-parent 做项目版本管理,需要替换resource.delimiter属性



    org.springframework.boot
    spring-boot-starter-parent
    1.2.5.RELEASE

需要在中添加


    ${} 

可以从spring-boot-starter-parent的pom.xml文件中查看 delimiter that doesn't clash with Spring ${}

    
        1.6
        @ 
        UTF-8
        UTF-8
        ${java.version}
        ${java.version}
    

你可能感兴趣的:(Maven打包时,环境变量替换,并解决spring-boot项目中${}无效的问题)