Maven Profile动态选择配置文件

  在开发过程中,我们的软件会面对不同的运行环境,比如开发环境、测试环境、生产环境,而我们的软件在不同的环境中,有的配置可能会不一样,比如数据源配置、日志文件配置、以及一些软件运行过程中的基本配置,那每次我们将软件部署到不同的环境时,都需要修改相应的配置文件,这样来回修改,很容易出错,而且浪费劳动力。

  maven提供了一种方便的解决这种问题的方案,就是profile功能。

二、profile简介

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

  profile定义的位置

(1)    针对于特定项目的profile配置我们可以定义在该项目的pom.xml中。(下面举例是这种方式)

(2)    针对于特定用户的profile配置,我们可以在用户的settings.xml文件中定义profile。该文件在用户家目录下的“.m2”目录下。

(3)    全局的profile配置。全局的profile是定义在Maven安装目录下的“conf/settings.xml”文件中的。

三、配置动态打包

1、配置profile

  在项目的profile中添加如下的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> 

  这里定义了三个环境,分别是dev(开发环境)、beta(测试环境)、release(发布环境),其中开发环境是默认激活的(activeByDefault为true),这样如果在不指定profile时默认是开发环境,也在package的时候显示指定你要选择哪个开发环境,详情见后面。

2、配置文件

  针对不同的环境,我们定义了不同的配置文件,文件目录如下:

Maven Profile动态选择配置文件

  如图所示,开发环境、测试环境、生产环境的配置文件分别放到src/main/resources目录下的config文件夹下。

  config下有多个环境的配置文件,命名规则为是application-环境名称.properties。

  处理过程:

1)通过profile选中你要使用的环境

2)通过package命令,将环境变量注入到application.properties中(这样子,那些公用的环境变量就不用在各个环境的配置文件中配置了)

3)项目中加载application.xml文件

加载配置文件

<context:property-placeholder location="classpath:application.properties"/>

例子:

application-beta.properties文件有如下部分内容:

env.datasource.jdbcUrl=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&autoReconnect=true&zeroDateTimeBehavior=round env.datasource.username=root env.datasource.password=12233

application.properties有部分如下内容用于注入上面的内容:

datasource.jdbcUrl=${env.datasource.jdbcUrl} datasource.username=${env.datasource.username} datasource.password=${env.datasource.password}

3、maven资源插件配置

  在pom.xml的build结点下,配置资源文件的位置,如下所示:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/583019cb5f86402ba91d41fe32188628.html