一、需求场景
1、开发环境和生产环境数据库地址和信息不同。
2、开发和生产日志等级不同
。。。
二、最简单的实现方式
在 pom.xml 中配置
<!-- 设置不同环境打包 --> <profiles> <profile> <id>dev</id> <properties> <db.url>aa1</db.url> <db.username>bb1</db.username> <db.password>cc1</db.password> <log.sqlEnable>true</log.sqlEnable> <log.appender>console</log.appender> </properties> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> <profile> <id>product</id> <properties> <db.url>aa2</db.url> <db.username>bb2</db.username> <db.password>cc2</db.password> <log.sqlEnable>true</log.sqlEnable> <log.appender>mainLog</log.appender> </properties> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> </profiles> <build> <finalName>xx-web</finalName> <!-- src/main/resources目录下 上面配置的字符串过滤替换 --> <resources> <resource> <directory>${project.basedir}/src/main/resources</directory> <filtering>true</filtering> </resource> </resources> </build> |
使用如下:
eg. /src/main/resources/conf/jdbc.properties
jdbc.driver=oracle.jdbc.OracleDriver jdbc.url=${db.url} jdbc.username=${db.username} jdbc.password=${db.password} |
默认是激活 dev 的配置,activeByDefault 那里设置为true了。
所以打包到生产环境时,需要执行类似如下命令,
mvn clean -X package -Pproduct
这样就避免每次手动替换工程中的不同了。如果有更复杂的配置差异,请参考:
Maven插件之portable-config-maven-plugin(不同环境打包)