Maven为本地、测试、生产等不同的环境打包

大家在项目开发中经常碰到这样的情况,每个项目都会有多套运行环境,比如开发环境、测试环境、生产环境等,不同的环境对应的配置也不尽相同,比如说数据库连接、文件路径、WebServices address等。    
不同环境下需要构建不同的包,那么我们可以通过以下两种方式来解决:

一、定义多个pom,使用-f 指定

比如定义如下pom:

pom_dev.xml (default) 
pom_qa.xml 
pom_prod.xml
我们打包的时候,选择不同的pom来打不同的包

Build war for qa:

mvn clean install -f pom_qa.xml
Build war for product:

mvn clean install -f pom_prod.xml
但是多个pom.xml之间重复配置很多,不容易维护,极不推荐这种方式。

二、pom定义多个profile进行配置

目前我们项目在配置文件夹中建立了三个不同环境的配置文件夹,目录结构如下:
project/
|-- src
    |-- main
    |   |-- java
    |   |-- env
    |   |   |-- dev
    |   |   |   |-- application.properties
    |   |   |   |-- database.properties
    |   |   |   |-- sap-config.propertes
    |   |   |-- qa
    |   |   |   |-- application.properties
    |   |   |   |-- database.properties
    |   |   |   |-- sap-config.propertes
    |   |   |-- prod
    |   |   |   |-- application.properties
    |   |   |   |-- database.properties
    |   |   |   |-- sap-config.propertes
    |   |-- resources
    |   |-- webapp
    |-- test
pom.xml里定义三个环境的profile,其中默认环境为dev:

	
	
		dev
		
			true
		
		
			dev
		
	
	
		qa
		
			qa
		
	
	
		prod
		
			prod
		
	
build定义如下:

	pos
	
		
			src/main/env/${package.env}
			properties
		
		
			src/main/resources
			
				properties/dev/*.*
				properties/qa/*.*
				properties/prod/*.*
			
		
	
	
		
		
			maven-war-plugin
			
				webapp
				webapp\WEB-INF\web.xml
			
		
	
其中${package.env}就是profile里定义的properties,打包的时候使用-P 指定需要打哪个环境的包。
打包的时候使用-P 指定需要打哪个环境的包。 
比如打开发包
Maven为本地、测试、生产等不同的环境打包_第1张图片
打包成功后,如下图
Maven为本地、测试、生产等不同的环境打包_第2张图片

你可能感兴趣的:(Java,maven,不同环境,打包,java)