Maven profile动态加载属性配置文件

背景

针对于开发项目中,软件会面临着不同的运行环境,比如测试环境,生产环境,开发环境.每个环境下对应的配置数据源,日志配置,资源配置等可能也不一样,需要自行修改属性配置文档,这样做会很大程度上浪费人的精力,然而maven提供了profile功能就能很好的解决.

Profile简述

profile可以让我们定义一系列的配置信息,然后指定其激活条件。这样我们就可以定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果。

  1. 对于某个具体的项目来说,如果想使用profile功能,直接在pom文件里配置即可(具体可参照下面).
  2. 如果是针对于某个特定的用户或者配置全局的,这就需要修改maven安装目录下的settings.xml文件.

配置动态打包

1.先上一下配置文档的目录结构

这里写图片描述
dev.properties里面的具体内容(截取了一部分,其他环境的类似):
这里写图片描述
config.properies内容:
这里写图片描述

2.profile的配置方式

<profiles>
    <profile>
        <!-- 本地开发环境 -->
        <id>dev</id>
        <properties>
            <profiles.active>dev</profiles.active>
        </properties>
        <activation>
            <!-- 设置默认激活这个配置 -->
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    <profile>
        <!-- 发布环境 -->
        <id>release</id>
        <properties>
            <profiles.active>release</profiles.active>
        </properties>
    </profile>
    <profile>
        <!-- 测试环境 -->
        <id>beta</id>
        <properties>
            <profiles.active>beta</profiles.active>
        </properties>
    </profile>
</profiles> 

3.配置属性文件位置

在build标签下面:

<filters>
    <filter>src/main/resources/profiles/${env}.properties</filter>
</filters>
<resources>
    <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
   </resource>
</resources>

正如前面图上所示,开发环境,测试环境,生产环境下的属性配置文档都放在了src/main/resources/profiles目录下,文件命名规则为*.properties.
调用过程:

  1. 如上通过profiles标签选中你要使用的环境
  2. 通过package命令将环境变量注入到config.properties中
  3. 项目会自动加载config.properties文件

4.激活profile

1.上面的代码中有默认的配置方式:

<activation>
    <!-- 设置默认激活这个配置 -->
    <activeByDefault>true</activeByDefault>
</activation>

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

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

mvn package –Pdev

  这里假设dev是在settings.xml中使用dev标记的处于激活状态的profile,那么当我们使用“-P !profile”的时候就表示在当前操作中该profile将不处于激活状态。
PS:最后要说明的是,在属性配置文档中不要使用不合要求的其他字符,会导致特殊字符后面所有的变量都无法注入到属性文档中.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章