Maven 区分开发环境和测试环境配置两种方式
- 方法一:(过滤方式)
- 第一步、创建配置文件
- 第二步:配置需要读取的配置文件
- 第三步:配置MAVEN 的 pom.xml文件
- 第四 步:打包
- 方法二:(选择打包方式)
== 作者:sunxiakun 原文:https://blog.csdn.net/sunxiakun/article/details/65444744 ==
项目开发过程中,如果一个项目经常发布,那么在打包之前会不断的修改配置文件,这无疑是很麻烦的一件事情。
今天我介绍下这个问题怎么解决。
** 注意:本配置的前提是项目必须是MAVEN项目。**
方法一:(过滤方式)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190213105545873.png)
第一步、创建配置文件
在项目的src/main/filter目录下创建 development.properties product.properties 两个文件。
development是开发配置内容。product是正式配置内容
(通过连接不同的数据库来模拟演示)
例如development:
driverClassName=com.mysql.jdbc.Driver
jdbc_url=jdbc\:mysql\://192.168.1.5:3306/testdev?useUnicode\=true&characterEncoding\=utf8
jdbc_username=sun
jdbc_password=123456
product如下:
driverClassName=com.mysql.jdbc.Driver
jdbc_url=jdbc\:mysql\://192.168.1.5:3306/testpro?useUnicode\=true&characterEncoding\=utf8
jdbc_username=sx
jdbc_password=124565
第二步:配置需要读取的配置文件
system.properties中需要变化的变量使用参数进行配置,如
driverClassName=com.mysql.jdbc.Driver
jdbc_url=${jdbc_url}
jdbc_username=${jdbc_username}
jdbc_password=${jdbc_password}
注意:${jdbc.url} 直接对应上面配置的development.properties或product.properties文件中的名称。
第三步:配置MAVEN 的 pom.xml文件
<profiles>
<profile>
<id>dev</id>
<properties>
<!-- 测试环境 -->
<env>development</env>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>prod</id>
<properties>
<!-- 正式环境 -->
<env>product</env>
</properties>
</profile>
</profiles>
<build>
<finalName>web</finalName>
<filters>
<filter>src/main/resources/filter/${env}.properties</filter>
</filters>
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>filter/*.properties</exclude>
</excludes>
<filtering>true</filtering>
</resource>
</resources>
</build>
profiles说明:
profile可以让我们定义一系列的配置信息,然后指定其激活条件。这样我们就可以定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果
<id>dev</id>
<properties>
<!-- 测试环境 -->
<env>development</env>
</properties>
key-value
env=development(可以有多个键值对)
默认启用的是dev环境配置:
<activation>
<activeByDefault>true</activeByDefault>
</activation>
配置文件路径,此路径可以自定义:
<filter>src/main/resources/filter/${env}.properties</filter>
maven中配置文件目录:
src/main/resources
第四 步:打包
打本地包 mvn -Pdev install或者mvn install(因为本例activeByDefault配的为true)
打产品包 mvn -Pprod install
结果:src/main/resources/config/system.properties根据mvn -P 参数决定值
mvn clean install -Pprod -DskipTests
方法二:(选择打包方式)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190213111722547.png)
pom.xml内容:
<profiles>
<profile>
<id>dev</id>
<properties>
<!-- 测试环境 -->
<env>development</env>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>prod</id>
<properties>
<!-- 正式环境 -->
<env>product</env>
</properties>
</profile>
</profiles>
<build>
<finalName>web</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<!-- 资源根目录排除各环境的配置,使用单独的资源目录来指定 -->
<excludes>
<exclude>development/*</exclude>
<exclude>product/*</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources/${env}</directory>
</resource>
</resources>
</build>
war文件结构(解压后):
打本地包 mvn -Pdev install或者mvn install(因为本例activeByDefault配的为true)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190213111837310.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZlaW5pdTU1NjY=,size_16,color_FFFFFF,t_70)
打产品包 mvn -Pprod install
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190213111906744.png)
注意:打包时请先mvn clean一下,否则可能两类配置文件同时存在引起误解
如果要带上文件夹:
将
<resource>
<directory>src/main/resources/${env}</directory>
</resource>
替换为
<resource>
<directory>src/main/resources</directory>
<includes>
<include>${env}/*.properties</include>
<!--使用<include>${env}</include>则加不进去-->
</includes>
</resource>
![在这里插入图片描述](https://img-blog.csdnimg.cn/2019021311210745.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZlaW5pdTU1NjY=,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190213112120749.png)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)