maven-filters 根据配置,自动编译不同环境下的包

背景:项目开发中,生产的配置一般是不同的, 为方便管理可将不同环境的配置分离到不同的配置文件中。再根据环境的需求打包不同环境的配置文件

首先要明确一点:maven通过filter可以替换指定类型文件中的el表达式的内容


1. 目录结构:

maven-filters 根据配置,自动编译不同环境下的包_第1张图片

2. 不同文件的内容

hibernate/user.hib.conf 项目中要读取的配置文件

tablename=${tablename}


spring/applicationContext.xml项目中要读取的配置文件



configuration.xml 项目中要读取的配置文件



	
	
	


filters/config_filter_dev.properties 开发配置文件

#configuration of database
db.url=develop url
db.username=develop db username
db.password=develop db password

#spring scanner path
spring.scan.path=com.cez.controller of develop

#cofiguration of hibernate
tablename=develop_table_name


filters/config_filter_product.properties 生产配置文件

#configuration of database
db.url=product url
db.username=product db username
db.password=product db password

#spring scanner path
spring.scan.path=com.cez.controller of product

#cofiguration of hibernate
tablename=product_table_name

pom.xml主要配置

  
  
  	
  	dev
  
  
  
  	
    maven-packge-name
    
    
    
    	src/filters/config_filter_${project.environment}.properties
    
    
    
    
    	
    		
    		src/main/resources
    		
    		
    		true
    		
    		
    		
    			
    			**/*.xml
    			**/*.conf
    		
    		
    		
    			**/*.hib.conf
    		
    		
    		config
    	
    
  

3. pom元素的简单介绍

project.environment:定义一个在pom中的变量。 可在当前pom.xml或以当前pom.xml为根的文件中使用, 例如:在assembly插件的配置文件中也可以直接使用该变量。

finalName:定义项目打包后,生成包的名字,或包名的一部分。 在assembly插件的配置文件也可以配置包名的组成部分。

filters/filter:指定项目中要使用的配置信息,依赖于resources标签

resources/resource:指定需要使用filter文件的源文件信息

directory:指定需要使用filter文件的源文件目录

includes/include:指定directory目录下那些类型的文件需要替换el表达式, 多种文件类型可使用多个include

excludes/exclude:指定directory目录下不需要替换el表达式的文件类型, 可以配置多个类型的文件

filtering:是否替directory下指定类型文件中的el表达式, true:将el表达式替换为相应的内容。 false:不替换el表达式, 编译后的文件中还是el表达式

targetPath:指定项目编译后的文件存放位置(以web-inf下的classes目录为根目录), 一般情况下,资源文件会被编译web-inf的classes根目录下, 

如上面的配置中, targetPath的值为config, 编译后的文件就被存放到web-inf/classes/config目录下了。 还没有 真实的用过这个。


你可能感兴趣的:(maven)