通过 maven filtering 机制实现打包不同的资源配置目录

2016-07-13 17:48:56   最后更新: 2017-02-08 16:58:24   访问数量:422




上一篇日志中,我们介绍了 maven 的基本用法,并实际操作通过 maven 创建并打包了一个项目

maven 基本介绍及项目创建

通常,我们的项目需要部署到复杂的环境中,在不同的环境需要不同的配置,比如线上、线下、测试环境需要访问不同的资源,配置不同的用户名、密码、IP、port 等,这样,我们的配置不仅需要区分环境,同时为了安全起见,还不能都打到我们发布的 jar 包或 war 包中,另一种情况是,通常在测试环境中,我们需要为 jvm 指定 -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=XXXX 参数来开启远程调试,而在线上,这样的调试端口在线上环境自然是不能开启的,maven 就提供了区分环境打包的功能,这是一个非常常用又十分方便的功能

 

在下面的例子中,我们通过在 resources 目录下创建不同的目录来区分不同的环境:

<build> <resources> <resource> <directory>src/main/resources/${conf-dir}</directory> </resource> <resource> <directory>src/main/resources/base</directory> </resource> </resources> </build> <profiles> <profile> <id>dev</id> <properties> <conf-dir>dev</conf-dir> </properties> </profile> <profile> <id>staging</id> <properties> <conf-dir>staging</conf-dir> </properties> </profile> <profile> <id>prod</id> <properties> <conf-dir>prod</conf-dir> </properties> </profile> </profiles>

 

 

我们通过 conf-dir 参数来指定环境,在 resources 下有 base、dev、staging、prod 四个资源目录,base 为所有环境共用的配置,其他三个目录则区分了三个不同环境的配置

 

mvn 命令

在项目打包时,maven 提供了 -P 参数用来指定所需打包的环境参数:

mvn clean && mvn compile && mvn -Pprod package;

 

 

idea

IDE 实现了一键式打包的功能,无需我们去执行命令,在 idea 中,maven projects 视图中,提供了对应于我们 pom.xml 中配置的环境的列表项,只需勾选对应项目即可

 

 






技术帖      配置      龙潭书斋      java      资源      spring      maven      resources      profile      product     


京ICP备15018585号