一个项目里总会有很多配置文件。而且一般都会有多套环境。开发的、测试的、正式的。而在这些不同的环境这些配置的值都会不一样。比如mail的配置、服务的url配置这些都是很常见的。所以在打包的时候就要根据environment来选不同的值或者配置文件。

比较常用的办法就是为不同的环境建立不同的配置文件目录。在打包的时候用对应的文件目录下的配置文件。

|-- resources
| |-- dev
| |-- product
| |-- qa
| `-- qa53

以前用ant的时候打包的时候处理就比较方便。打包前copy一下对应目录下的配置文件覆盖target下的那些文件再打包就可以了。在刚开始用maven的时候就想要怎么解决,一直没有找到ant的这种方式的可行的办法。其实主要是按ant这种处理方法去思考了。只去想没有有cp这种target。其实在maven里用profile就可以解决了。对于不同的environment定义不同的profile就ok了,目录结构还是沿用原来的就可以。

在pom.xml里定义一个变量

    <properties>
......
<package.environment>qa53</package.environment>
</properties>

这里定义的值是经常打包的一个profile,方便少敲点代码。然后定义一些profile

    <profiles>
<profile>
<id>product</id>
<properties>
<package.environment>product</package.environment>
</properties>
</profile>
<profile>
<id>dev</id>
<properties>
<package.environment>dev</package.environment>
</properties>
</profile>
<profile>
<id>qa</id>
<properties>
<package.environment>qa</package.environment>
</properties>
</profile>
</profiles>

最后再修改一下打包的plugin,引用这个变量。

            <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<archive>
<addMavenDescriptor>false</addMavenDescriptor>
</archive>
<webResources>
<resource>
<!-- this is relative to the pom.xml directory -->
<directory>src/main/resources/${package.environment}</directory>
<targetPath>WEB-INF/classes</targetPath>
<filtering>true</filtering>
</resource>
</webResources>
</configuration>
</plugin>

这里注意一个参数<filtering>true</filtering>,一定要设置成true这样才会用对应environment目录下的配置文件覆盖原来的。ok。mvn package的时候就会用默认的qa53目录下的配置文件。如果要发布正式环境的包就运行。mvn -Pproduct package

最新文章

  1. android版扫扫图书应用源码
  2. [No000028]Python的使用之禅及程序员应该明白的一些道理
  3. 【NOI2016】区间 题解
  4. SDUTOJ 3312
  5. iOS UIImage扩展方法(category):放大、旋转、合并UIImage、增加渐变层、添加阴影、调节透明度、保存到相册
  6. dijkstra堆优化模板
  7. Linux(ubuntu)使用dd从iso制作win7安装u盘(读卡器一样),以及备份分区
  8. 4605 Magic Ball Game
  9. JavaScript之通用addLoadEvent代码源码
  10. 201521123001《Java程序设计》第9周学习总结
  11. 2018-11-04 在线代码离线翻译Chrome插件&quot;一马&quot;v0.0.14
  12. spring相关面试题
  13. 【Visual Studio 扩展工具】如何在ComponentOneFlexGrid树中显示RadioButton
  14. [easyUI] autocomplete 简单自动完成以及ajax从服务器端完成
  15. yii框架中获取添加数据后的id值
  16. STLC - 软件测试生命周期
  17. functional program language
  18. JAVA仿百度分页
  19. (转)Python中的上下文管理器和Tornado对其的巧妙应用
  20. 如何做实时监控?—— 参考 Spring Boot 实现(转)

热门文章

  1. LANMPS 一键PHP环境安装包(转)
  2. [翻译]Gulp.js简介
  3. USACO 6.5 Closed Fences
  4. USACO 6.1 A Rectangular Barn
  5. bzoj 1899 贪心+dp
  6. Django 学习总结(更新中)
  7. 数据挖掘算法:关联分析二(FP-tree算法)
  8. 20169211《Linux内核原理与分析》 第九周作业
  9. [转]kali中eth0网卡突然消失解决方案
  10. Oracle 默认的几个登陆用户名和密码