maven profile动态选择配置文件


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>develop</id> <properties> <profiles.active>develop</profiles.active> </properties> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> <profile>
<!--预览环境--> <id>preview</id> <properties> <profiles.active>preview</profiles.active> </properties> </profile> <profile>
<!--生产环境--> <id>release</id> <properties> <profiles.active>release</profiles.active> </properties> </profile> </profiles>

  上面定义了,三个环境,分别为开发环境、预览环境和生产环境。其中develop为默认激活的(<activeByDefault>true</activeByDefault>),不指定profile的场合,默认使用开发环境。也可以在执行maven package时指定profile选择选择哪个环境。

 

4、配置文件

从上图可以看到,配置文件的名称为application.properties,分别位于不同的文件夹下。现在我们想要做的是不同的环境使用不同目录下的配置文件。

5、配置maven资源插件

    <build>
        <finalName>config</finalName>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <excludes>
                    <exclude>config/</exclude>
                </excludes>
            </resource>
            <resource>
                <directory>src/main/resources/config/${profiles.active}</directory>
                <targetPath>.</targetPath>
            </resource>
        </resources>
    </build>

6、激活profile

1)默认的激活

  上面的profile配置中设置的默认的激活环境。如下面所示

<activeByDefault>true</activeByDefault> 

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

当我们在进行Maven操作时就可以使用-P参数显示的指定当前激活的是哪一个profile了。比如我们需要在对项目进行打包的时候使用id为dev的profile,我们就可以这样做:

mvn package –P develop

  

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM