springboot使用maven实现多环境运行和打包

在实际开发过程中,可能需要不断进行环境的切换和打包部署,通常我们会选择在application.properties中修改不同环境对应的配置文件,这种方式不仅效率低,而且很容易发生错误,造成不必要的麻烦降低工作效率。maven提供了多环境配置,可以方便实现不同环境的配置切换和打包。

一、配置文件
在classpath根目录(在springboot工程中,classpath为resources目录)下创建多个环境的配置文件,分别命名application-dev.properties、application-test.properties、application-pro.properties,分别对应开发环境、测试环境、生产环境。springboot默认使用logback日志进行日志处理,如果日志配置也需要根据不同环境进行切换,则在classpath下创建logback-dev.xml、logback-test.xml、logback-pro.xml,创建完成后,目录结构如下:

springboot使用maven实现多环境运行和打包_第1张图片
在对应环境的配置文件中,指定使用的日志配置文件,以开发环境为例其他环境的配置以此类推,在application-dev.properties文件中指定使用的日志配置文件logback-dev.xml

# 日志配置
logging.config=classpath:logback-dev.xml

二、配置pom文件
1.配置多个环境


	
	
		
		
			dev
			
				true
			
			
				dev
			
		
		
		
			test
			
				false
			
			
				test
			
		
		
		
			pro
			
				false
			
			
				pro
			
		
	

标签中的名称对应配置文件的profile名称,即-后面的名称。
设置为true时表示默认激活该环境。

2.在pom文件中指定resource目录和配置文件


	
		
			
			src/main/resources
			
				application.properties
				application-${environment}.properties
				logback-${environment}.xml
			
			true
		
	

配置完成后,在Maven Projects/Profiles中会出现环境切换选项如下图所示。

springboot使用maven实现多环境运行和打包_第2张图片
三、配置动态变量
我们想要切换不同的配置文件,需要在application.properties文件中指定spring.profiles.active参数,显然该参数不是静态的,需要根据你选择的环境进行动态切换,在pom文件中使用${}读取标签配置,但是在application.properties中需使用占位符@@进行配置。

spring.profiles.active=@environment@

environment对应pom文件中的标签

四、使用及注意事项
我们在使用时,需要先指定要运行或打包的环境,在Maven Projects/Profiles中勾选对应的环境名称后再运行或打包。通常情况下,会默认勾选pom中true设置为true的环境,当我们同时勾选多个环境时,则按pom文件中配置的先后顺序,后配置的环境将被激活。
注意事项:如果发现pom文件中${environment}报错,说明你还没有指定需要运行或打包的环境,在Maven Projects/Profiles中勾选一个即可。

springboot使用maven实现多环境运行和打包_第3张图片
按照以上步骤就可以实现多环境的轻松切换了,下面附上完整的配置文件

1.application.properties

spring.profiles.active=@environment@

2.application-dev.properties

server.port=7000

# 数据源配置
spring.datasource.name=dev
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

# redis配置
spring.redis.database=0
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=
spring.redis.jedis.pool.max-active=-1
spring.redis.jedis.pool.max-wait=-1
spring.redis.jedis.pool.max-idle=-1
spring.redis.jedis.pool.min-idle=0
spring.redis.timeout=1000
spring.session.store-type=redis

# 日志配置
logging.config=classpath:logback-dev.xml

3.logback.xml



    
    
    
    
    
        
            %d{yyyy-MM-dd HH:mm:ss} %-4relative [%thread] %-5level %logger{35} - %msg %n
        
    

    
        
            DEBUG
        
        ${LOG_PATH}/${APP_ID}/access.log
        
            ${LOG_PATH}/${APP_ID}/access.log.%d{yyyy-MM-dd}.zip
            
            10
        
        
            %d{yyyy-MM-dd HH:mm:ss} %-4relative [%thread] %-5level %logger{35} - %msg%n
        
    

    
        
            DEBUG
            ACCEPT
            DENY
        
        ${LOG_PATH}/${APP_ID}/access_debug.log
        
            ${LOG_PATH}/${APP_ID}/access_debug.log.%d{yyyy-MM-dd}.zip
            
            10
        
        
            %d{yyyy-MM-dd HH:mm:ss} %-4relative [%thread] %-5level %logger{35} - %msg%n
        
    

    
        
            INFO
            ACCEPT
            DENY
        
        ${LOG_PATH}/${APP_ID}/access_info.log
        
            ${LOG_PATH}/${APP_ID}/access_info.log.%d{yyyy-MM-dd}.zip
            
            10
        
        
            %d{yyyy-MM-dd HH:mm:ss} %-4relative [%thread] %-5level %logger{35} - %msg%n
        
    
        
    
        
            WARN
            ACCEPT
            DENY
        
        ${LOG_PATH}/${APP_ID}/access_warn.log
        
            ${LOG_PATH}/${APP_ID}/access_warn.log.%d{yyyy-MM-dd}.zip
            
            10
        
        
            %d{yyyy-MM-dd HH:mm:ss} %-4relative [%thread] %-5level %logger{35} - %msg%n
        
    

    
        
            ERROR
            ACCEPT
            DENY
        
        ${LOG_PATH}/${APP_ID}/access_error.log
        
            ${LOG_PATH}/${APP_ID}/access_error.log.%d{yyyy-MM-dd}.zip
            
            10
        
        
            %d{yyyy-MM-dd HH:mm:ss} %-4relative [%thread] %-5level %logger{35} - %msg%n
        
    


    
        
        0
        
        512
        
    
    
        
        0
        
        512
        
    
    
        
        0
        
        512
        
    
    
        
        0
        
        512
        
    
    
        
        0
        
        512
        
    
    
        
        0
        
        512
        
    
    
        
        
        
        
        
        
        
    
    

4.pom.xml



	4.0.0
	
		org.springframework.boot
		spring-boot-starter-parent
		2.1.3.RELEASE
		 
	
	com.soft.springboot
	demo
	0.0.1-SNAPSHOT
	demo
	Demo project for Spring Boot

	
		1.8
	

	
		
			org.springframework.boot
			spring-boot-starter-web
		
		
			org.springframework.boot
			spring-boot-starter-test
			test
		
	

	
		
			
				org.springframework.boot
				spring-boot-maven-plugin
				
					
						
							repackage
						
					
				
			
		

		
			
				src/main/resources
				
					application.properties
					application-${environment}.properties
					logback-${environment}.xml
				
				true
			
		
	

	
	
		
		
			dev
			
				true
			
			
				dev
			
		
		
		
			test
			
				false
			
			
				test
			
		
		
		
			pro
			
				false
			
			
				pro
			
		
	

你可能感兴趣的:(maven)