maven管理多环境开发部署

     在实际项目我们都需要面对不同环境的切换来展现,开发环境,测试环境,上线环境等。以往的部分做法是切换环境时,修改配置再部署。这样做有诸多不便,如可能会修改不全面,改错配置,频繁的切换部署需要专人来处理等等问题。使用maven来管理就不会出现这些问题。maven很好集成开发,测试,部署,发布 一条命令全部处理完成。部署多环境就需要用到过滤机制。

       maven过滤机制有二种:1、maven自带的过滤机制,filter和resources;    2、maven-war-plugin插件具有过滤功能,是在build时替换变量值

用dev.properties , test.properties , product.properties分别储存开始,测试,上线环境的信息。


		
			test
			
				test
				no300
			
			
				
					src/main/resources/filter/local_common.properties
				
			
		
		
			dev
			
				dev
				no100
			
			
				true
						
		
		
			product			
			
				product
				product
			
		
	

		example-maven
		
			src/main/resources/filter/common_${project.classifier}.properties
			src/main/resources/filter/multidomain_${currentDomain}.properties
		
		
			
				src/main/resources
				true
			
		


上面是自带的过滤机制,用命令 mvn clean package -Ptest 表示打测试环境的包。 这个打包替换有个局限,只替换resource资源文件的占位符,对于在webapp下的jsp等文件并没有起作用。   这时就需要使用第二种过滤机制,maven-war-plugin插件。


			
				maven-war-plugin
				2.4
				
					
						src/main/resources/filter/common_${project.classifier}.properties
						src/main/resources/filter/multidomain_${currentDomain}.properties
					
					
						
							src/main/webapp/WEB-INF
							false
						
						
							true
							src/main/webapp
						
					
				
			


使用maven-war-plugin插件,需要注意版本。2.2和2.4有很多区别。2.2不使用filters属性也能够替换jsp中的占位变量,但它在copyfile时使用操作系统字符编码,不能外界修改,所以在window下编码的文件会出现中文乱码问题。2.4版本已经处理了中文编码问题,可以通过project.build.sourceEncoding传值UTF-8设置编码,但同时必需显式使用filters属性,而不能用上级全局共用的filters。


群组138919906,大家共同学习进步

你可能感兴趣的:(java,maven,plugins,java,发布,部署)