项目开发过程中,如果一个项目经常发布,那么在打包之前会不断的修改配置文件,这无疑是很麻烦的一件事情。今天我介绍下这个问题怎么解决。
第一步、创建配置文件
第三步:配合MAVEN 的 pom.xml文件
profile可以让我们定义一系列的配置信息,然后指定其激活条件。这样我们就可以定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果
env=development(可以有多个键值对)
默认启用的是dev环境配置:
<activation>
<activeByDefault>true</activeByDefault>
</activation>
配置文件路径,此路径可以自定义:
<filter>src/main/resources/filter/${env}.properties</filter>
maven中配置文件目录:
<directory>src/main/resources</directory>
第四 步:打包
打本地包 mvn -Pdev install或者mvn install(因为本例activeByDefault配的为true)
打产品包 mvn -Pprod install
结果:src/main/resources/config/system.properties根据mvn -P 参数决定值
注意:本配置的前提是项目必须是MAVEN项目。
方法一:(过滤方式)
目录结构:
第一步、创建配置文件
在项目的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 #redis.host=127.0.0.1product如下:
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 #redis.host=127.0.0.1第二步:配置需要读取的配置文件 system.properties中需要变化的变量使用参数进行配置,如
driverClassName=com.mysql.jdbc.Driver jdbc_url=${jdbc_url} jdbc_username=${jdbc_username} jdbc_password=${jdbc_password} #redis.host=127.0.0.1注意:${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>
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>
profile可以让我们定义一系列的配置信息,然后指定其激活条件。这样我们就可以定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果
<id>dev</id> <properties> <!-- 测试环境 --> <env>development</env> </properties>key-value
env=development(可以有多个键值对)
默认启用的是dev环境配置:
<activation>
<activeByDefault>true</activeByDefault>
</activation>
配置文件路径,此路径可以自定义:
maven中配置文件目录:
<directory>src/main/resources</directory>
第四 步:打包
打本地包 mvn -Pdev install或者mvn install(因为本例activeByDefault配的为true)
打产品包 mvn -Pprod install
结果:src/main/resources/config/system.properties根据mvn -P 参数决定值
方法二:(选择打包方式)
目录结构:
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)
打产品包 mvn -Pprod install
注意:打包时请先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>