1.背景
开发过程中,我们的软件会有不同的环境、如开发环境、预览环境、生产环境等,不同的环境,使用的配置文件往往是不同的。如数据源的配置、log的配置、其他一些基础配置。
在发布环境时,每次对配置文件改来改去的,很麻烦,而且极易出错。
Maven提供了一种解决这类问题的方案,那就是profile。
2.Profile
Profile可以让我们定义一系列配置信息,然后指定激活条件,来激活指定的配置信息。这样,我们可以定义多个profile,每个profile定义不同的激活条件和配置信息。
这样我们就可以不同的环境使用不同的激活条件了。
profile定义的位置
- 针对于特定项目的profile配置我们可以定义在该项目的pom.xml中。(下面举例是这种方式)
- 针对于特定用户的profile配置,我们可以在用户的settings.xml文件中定义profile。该文件在用户家目录下的“.m2”目录下。
- 全局的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> |
配置文件结构
![](https://wiki.maoyan.com/download/thumbnails/39997888/DX-20181116@2x.png?version=1&modificationDate=1542338344000&api=v2)
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