1.背景

开发过程中,我们的软件会有不同的环境、如开发环境、预览环境、生产环境等,不同的环境,使用的配置文件往往是不同的。如数据源的配置、log的配置、其他一些基础配置。

在发布环境时,每次对配置文件改来改去的,很麻烦,而且极易出错。

Maven提供了一种解决这类问题的方案,那就是profile。

2.Profile

Profile可以让我们定义一系列配置信息,然后指定激活条件,来激活指定的配置信息。这样,我们可以定义多个profile,每个profile定义不同的激活条件和配置信息。

这样我们就可以不同的环境使用不同的激活条件了。

profile定义的位置

  1.  针对于特定项目的profile配置我们可以定义在该项目的pom.xml中。(下面举例是这种方式)
  2.  针对于特定用户的profile配置,我们可以在用户的settings.xml文件中定义profile。该文件在用户家目录下的“.m2”目录下。
  3. 全局的profile配置。全局的profile是定义在Maven安装目录下的“conf/settings.xml”文件中的。

3.配置profile

定义如下profile配置文件

配置

<profiles>

    <profile>        //开发环境

        <id>dev</id>

        <properties>

            <profiles.active>dev</profiles.active>

        </properties>

        <activation>  //默认激活

            <activeByDefault>true</activeByDefault>

        </activation>

    </profile>

    <profile>       //test环境

        <id>qatest</id>

        <properties>

            <profiles.active>qatest</profiles.active>

        </properties>

    </profile>

    <profile>       //发布环境

        <id>prod</id>

        <properties>

            <profiles.active>prod</profiles.active>

        </properties>

    </profile>

</profiles>

 

配置文件结构

 

POM配置

POM配置

<build>

    <finalName>config</finalName>

    <resources>

        //resource肯定上要往输出目录输出的

        <resource>

            <directory>src/main/resources</directory>

        </resource>

        //根据上面的配置profile中的属性,动态的选择要加载的目录路径,加载进输出目前target中,换了配置文件就相当于按环境构建了

        <resource>

            <directory>src/main/profiles/${profiles.active}</directory>

            <targetPath>.</targetPath>

        </resource>

    </resources>

</build>

本质上profile只是事先定义好了一组变量,dev,qatest,prod之类,然后在build中动态的改变编译输出的配置文件,以达到按环境改变构建的目的

 

使用-P参数显示激活一个profile

mvn package –P dev