使用maven profile指定配置文件打包适用多环境

开发过程, 我们习惯把数据源配置, 项目常量, 日志配置等基础数据配置写到一个个单独的的文件中. 如jdbc.properties等各种.格式的文件.

 

如何不频繁修改配置文件, 随时打包不同基础数据配置信息的项目.

 

文中有大图片, 阅读时模糊, 建议用鼠标左键按住,把图片拖到浏览器新的窗口去看.

1.新建maven项目,   在pom.xml中添加 profile节点信息如下:

 

[html] view plain copy

  1. <profiles>  
  2.         <profile>  
  3.             <!-- 开发环境 -->  
  4.             <id>dev</id>  
  5.             <properties>  
  6.                 <environment>development</environment><!-- 节点名字environment是自己随意取的 -->  
  7.             </properties>  
  8.             <activation>  
  9.                 <activeByDefault>true</activeByDefault><!-- 默认激活该profile节点-->  
  10.             </activation>  
  11.         </profile>  
  12.         <profile>  
  13.             <!-- 测试环境 -->  
  14.             <id>test</id>  
  15.             <properties>  
  16.                 <environment>test</environment>  
  17.             </properties>  
  18.         </profile>  
  19.         <profile>  
  20.             <!-- 预演环境 -->  
  21.             <id>prev</id>  
  22.             <properties>  
  23.                 <environment>preview</environment>  
  24.             </properties>  
  25.         </profile>  
  26.         <profile>  
  27.             <!-- 生产环境 -->  
  28.             <id>prod</id>  
  29.             <properties>  
  30.                 <environment>production</environment>  
  31.             </properties>  
  32.         </profile>  
  33. </profiles>  

 

 

 

 

 2. 在项目中添加各环境需要的数据源配置文件,分不同目录存放, 分别是开发,测试, 预演,生产  环境. 如下图左边部分所示.  

 

3. pom.xml中配置resource节点信息.

[html] view plain copy

  1. <build>             
  2.     <resources>  
  3.         <resource>  
  4.             <directory>src/main/resources</directory>  
  5.             <excludes>  
  6.                 <exclude>environment/development/*</exclude>    
  7.                 <exclude>environment/test/*</exclude>    
  8.                 <exclude>environment/preview/*</exclude>    
  9.                                 <exclude>environment/production/**</exclude>  
  10.             </excludes>  
  11.         </resource>  
  12.         <resource>  
  13.             <directory>src/main/resources/environment/${environment}</directory>  
  14.             <targetPath>environment/${environment}</targetPath>  
  15.         </resource>  
  16.     </resources>  
  17. </build>  

 

resource节点信息解释: 

 

[html] view plain copy

  1. <directory>src/main/resources</directory> <!--打包时包含src/main/resources目录下所有"子"文件 和 "孙"文件.如config 和environment -->  
  2. <exclude>environment/development/**</exclude> <!--打包时排除src/main/resources/environment/development下所有"子"文件 和 "孙"文件.-->  
  3. <exclude>environment/test/**</exclude> <!--打包时排除src/main/resources/environment/test下所有"子"文件 和 "孙"文件.-->  
  4. <exclude>environment/preview/**</exclude> <!--打包时排除src/main/resources/environment/preview下所有"子"文件 和 "孙"文件.-->  
  5. <exclude>environment/production/**</exclude><!--打包时排除src/main/resources/environment/production下所有"子"文件 和 "孙"文件.-->  
  6. <!-- 注意点: 如果写一个心号*, 如<exclude>environment/development/*</exclude> 则表示:打包时排除src/main/resources/environment/development下所有"子"文件, 不排除"孙"文件, 如上一个截图所示.-->  
  7. <!-- 以上配置优先度从上到下 递增, 这就达到目的: config目录下的配置各环境都需要, 而其它环境相关的配置只会有一个目录被打包--->  

 

[html] view plain copy

  1. <directory>src/main/resources/environment/${environment}</directory> <!-- 打包时包含src/main/resources/environment/${environment}下所有"子"文件,environment变量值来自profile中赋值 -->  
  2. <targetPath>environment/${environment}</targetPath><!--指定src/main/resources/environment/${environment}所有"子文件" 打包 到包的哪个目录 -->  


4.  项目打包.   打包命令mvn package -Pdev来指定激活id为 dev 的profile节点, 这样, 开发环境配置文件就会被打包.
开发: mvn package -Pdev (因为配置了默认激活dev部分, 所以也可以使用mvn package, 这与 mvn package -Pdev 效果相同)
测试: mvn package -Ptest
预演:mvn package -Pprev
生产:mvn package -Pprod

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值