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