首页 > 代码库 > maven项目之Profile---不同环境打包不同配置
maven项目之Profile---不同环境打包不同配置
作为一名程序员,在开发的过程中,经常需要面对不同的运行环境(开发环境、测试环境、生产环境、内网环境、外网环境等等),在不同的环境中,相关的配置一般不一样,比如数据源配置、日志文件配置、以及一些软件运行过程中的基本配置。每次在不同环境部署程序时,都需要修改相应的配置文件,使之完成环境的配置。这么做存在一个比较大的问题:每次修改配置非常麻烦,而且配置错误会产生不可预估的影响,比如,在发布生产环境时用的开发环境的配置还好,但如果在开发环境下用生产环境的数据,将会造成生产数据的污染,导致生产环境崩溃。
目前JAVA相关的项目基本都是使用Maven来进行构建。在maven中实现多环境的构建可移植性需要使用profile,通过不同的环境激活不同的profile来达到构建的可移植性。
一、pom中的profile配置
首先是profile配置,在pom.xml中添加如下profile的配置:
<profiles> <profile> <!-- 测试环境 --> <id>test</id> <properties> <jdbc.username>ludidevelop</jdbc.username> <jdbc.password>Ludi@12345</jdbc.password> <jdbc.jdbcUrl>jdbc:mysql://10.77.55.161:3306/quicksureuat?allowMultiQueries=true</jdbc.jdbcUrl> <log.file.address>../logs/quickSureMobileServer.log</log.file.address> <exception.file.address>../logs/quickSureMobileServerError.log</exception.file.address> <jy.connect.username>xxbao1113_test</jy.connect.username> <jy.connect.password>xxbao1113_test</jy.connect.password> <sinosafe.synchronization.url>http://mtest.sinosafe.com.cn/quicksurepayment</sinosafe.synchronization.url> <sinosafe.asynchronous.url>http://mtest.sinosafe.com.cn/quicksurepolicy</sinosafe.asynchronous.url> <sinosafe.return.url>http://localhost:8989/ludiquickSureMobileServer/paymentCompleteServlet/goPaymentSucessPage.do</sinosafe.return.url> </properties> <!-- 默认环境,tomcat打包的时候也是读这个默认配置 --> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> <profile> <!-- 生产环境 --> <id>product</id> <properties> <jdbc.username>quicksuredb%ludi</jdbc.username> <jdbc.password>quicksure@168</jdbc.password> <jdbc.jdbcUrl>jdbc:mysql://quicksuredb.mysqldb.chinacloudapi.cn:3306/quicksuredbpe?allowMultiQueries=true</jdbc.jdbcUrl> <log.file.address>/data/logs/quickSureMobileServer.log</log.file.address> <exception.file.address>/data/logs/quickSureMobileServerError.log</exception.file.address> <jy.connect.username>xxbao16328</jy.connect.username> <jy.connect.password>xxb!^#*16328</jy.connect.password> <sinosafe.synchronization.url>http://m.sinosafe.com.cn/quicksurepayment</sinosafe.synchronization.url> <sinosafe.asynchronous.url>http://m.sinosafe.com.cn/quicksurepolicy</sinosafe.asynchronous.url> <sinosafe.return.url>http://m.quicksure.com/ludiquickSureMobileServer/paymentCompleteServlet/goPaymentSucessPage.do</sinosafe.return.url> </properties> </profile> </profiles>
这里定义了两个环境,test(测试环境)、product(生产环境),其中开发环境是默认激活的(activeByDefault为true),这样如果在不指定profile时默认是开发环境。(默认环境,eclipse中tomcat打包的时候也是读这个默认配置)
同时每个profile还定义了多个属性,其中profiles.active表示被激活的profile的配置文件的目录。
二、在pom文件的build中配置
在某个resource中如果设置filtering为true,将会根据输入参数动态修改相关内容
<resources> <resource> <directory>src/main/resources</directory> <!-- 在某个resource中如果设置filtering为true,将会根据输入参数动态修改相关内容 --> <filtering>true</filtering> </resource> </resources>
二、profile属性引用
profile中定义的属性,可以在.properties中用"${}"直接应用
下面贴一下在properties问价中怎么引用profile属性:
jdbc.username=${jdbc.username}
jdbc.password=${jdbc.password}
jdbc.driver_class=com.mysql.jdbc.Driver
jdbc.jdbcUrl=${jdbc.jdbcUrl}
四、maven打包
maven打包时命令:mvn clean package -P profileid
参考文献:
http://www.cnblogs.com/lzxianren/p/maven-profile.html
http://elim.iteye.com/blog/1900568
maven项目之Profile---不同环境打包不同配置