文章目录

  1. 1. 配置POM文件
  2. 2. 目录结构

开发一个项目,有许多环境,例如开发、测试和预生产、生产部署上线几个阶段,每个阶段对配置(数据库、日志)都有不同的设置。以前,都是以开发环境为主,在测试和部署上线时由部署工程师负责修改配置并上线。但是,这样存在较大的风险,因此通过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
(完)

微信公众号

文章目录

  1. 1. 配置POM文件
  2. 2. 目录结构