web项目在不同运行环境下如本地测试、线上测试、生产环境多个环境的资源配置文件各不相同,以项目为例,资源文件结构如下图:
在maven构建之前,每次部署完成之后都需要手动修改配置文件,这样极为不便,下面介绍通过maven构建多环境下的打包方法。
1.首先资源文件配置如上图所示,划分不同环境的资源文件目录。
2.增加web模块的pom文件配置:
<profiles>
<profile>
<id>local</id>
<properties>
<deploy.type>local</deploy.type>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<deploy.type>prod</deploy.type>
</properties>
</profile>
<profile>
<id>dev</id>
<properties>
<deploy.type>dev</deploy.type>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
</profiles>
本例中,pom配置分别为本地环境(local)、开发环境(dev)、生产环境(prod),其中默认激活环境为dev。
3.为项目编译添加资源过滤:
<build>
<resources>
<resource>
<directory>${project.basedir}/src/main/resources</directory>
<!-- 资源根目录排除各环境的配置,使用单独的资源目录来指定 -->
<excludes>
<exclude>local/*</exclude>
<exclude>dev/*</exclude>
<exclude>prod/*</exclude>
</excludes>
</resource>
<resource>
<directory>${project.basedir}/src/main/resources.${deploy.type}</directory>
</resource>
</resources>
</build>
在Intelij IDEA中编译项目时,首先选择你要构建的profile,如下:
然后再运行编译,即可实现不同环境下的构建发布(或使用mvn指令mvn install -Pdev发布)。