Maven应用实践 多环境配置
欢迎来到阿八个人博客网站。本 阿八个人博客 网站提供最新的站长新闻,各种互联网资讯。 喜欢本站的朋友可以收藏本站,或者加QQ:我们大家一起来交流技术! URL链接:https://www.abboke.com/xwzhj/2019/0611/330.html
文章目录
开发一个项目,有许多环境,例如开发、测试和预生产、生产部署上线几个阶段,每个阶段对配置(数据库、日志)都有不同的设置。以前,都是以开发环境为主,在测试和部署上线时由部署工程师负责修改配置并上线。但是,这样存在较大的风险,因此通过Maven多环境配置是一个很好的解决方案。
配置POM文件
在pom文件中确定filter和要filter的资源,这是通过在build节点中添加filter和resource来实现的。下面,配置表示要对src/main/resources下的资源进行过滤。过滤时采用的过滤文件为src/main/filters/filter-${env}.properties文件,其中${env}是一个变量,表示当前使用的环境,这是通过在pom文件中通过profile定义的。
<filters> <filter>src/main/filters/filter-${env}.properties</filter> </filters> <resources> <resource> <directory>src/main/filters/resources/${env}</directory> </resource> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources>
在测试和部署上线时分别通过-P传入当前的profile id,这样maven就会将env变量设置为对应的值,从而导致使用不同的filter文件来对resources下的文件进行过滤替换。例如:当调用maven package时传入-Pdev(因为我们将dev设置为默认,所以也可以不传)参数,则会使用filter-dev.properties中的内容来替换resources目录中的配置文件。
<profiles> <profile> <id>development</id> <properties> <env>development</env> </properties> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> <profile> <id>test</id> <properties> <env>test</env> </properties> </profile> <profile> <id>preproduction</id> <properties> <env>preproduction</env> </properties> </profile> <profile> <id>product</id> <properties> <env>product</env> </properties> </profile> </profiles>
目录结构
|--filter |----resources |--------development |--------test |--------preproduction |--------product |----filter-development.properties |----filter-test.properties |----filter-preproduction.properties |----filter-product.properties