Maven项目使用profile自动替换项目中的resource的时候,如何正常使用eclipse的tomcat发布

一般情况下,我们会把多个web项目集中到一个maven项目中,比如下图的结构:

iuuplatform是整个maven项目,其中iuuscenicadmin(景区管理平台),iuuwebservice(接口),iuusuperadmin(超管平台)是三个war项目,其他的模块都是公用模块,供三个web项目调用。

同时,为了适应多种发布环境,maven提供了resource的文件配置文件参数自动替换,具体这块的功能请参考:

https://www.cnblogs.com/pixy/p/4798089.html

按照上述文章的内容,就可以实现根据不同的profile配置不同的properties文件了。

 

但是上述的配置带来了一个很严重的问题,properties文件中必须是类似下面的配置

也就是说这个配置在系统中是不能直接使用的,所以每次启动就必须使用maven tomcatX:run命令才能启动,而不能直接是用eclipse的部署进行启动测试

这样就无形中浪费了很多次的编译时间,打包时间和启动时间,也无法使用热部署工具直接操作tomcat。

所以,为了解决这个问题,又不放弃原有的properties替换功能,研究好长时间总算找到办法解决了这个问题,具体的思路入下:

1,目前的部署环境分为三类:开发,仿真和生成环境,直接把配置文件按照开发环境进行配置。

2,另外复制两份配置文件,一份为仿真环境配置,一份为生成环境配置。

3,去除maven pom.xml中的profile里的jdbc等配置,只留下一个变量配置,用于定义环境变量profiles.activation。

4, 定义web项目的 resource目录,先去除所有的配置文件,然后再根据环境变量profile.activation进行配置文件的添加。

5,利用maven-war-plugin插件,指定拷贝的配置文件路径。

6,war项目中的代码做出相应的调整。下图的两个红框是默认的开发的配置,绿色的框是仿真环境的配置,深蓝色的框是生成环境的配置,这三套配置都是实际的参数而不是形参。注意红色箭头的的tmp文件里什么都没有,只是一个文件,之所以要加上是访问maven处理resource的时候报错。

 

以上,基本上就完成了一开始的计划。虽然看上去,思路比较简单,但是一开始受eclipse的发布路径的影响,maven插件的影响导致更换了几套思路和实现方法,最后选择这种对比起来最简单的一种方式。唯一的遗憾是,每次增加一种新的配置的时候,三个配置文件都需要进行改动,不过相对这个改动时间,节省下来的编译和发包的时间是更有意义的。

One Response to “ Maven项目使用profile自动替换项目中的resource的时候,如何正常使用eclipse的tomcat发布 ”

发表评论