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

来源:互联网 发布:深入浅出html5编程pdf 编辑:程序博客网 时间:2024/05/16 17:51

背景

针对于开发项目中,软件会面临着不同的运行环境,比如测试环境,生产环境,开发环境.每个环境下对应的配置数据源,日志配置,资源配置等可能也不一样,需要自行修改属性配置文档,这样做会很大程度上浪费人的精力,然而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:最后要说明的是,在属性配置文档中不要使用不合要求的其他字符,会导致特殊字符后面所有的变量都无法注入到属性文档中.

原创粉丝点击