/ others  

Maven构建多环境发布

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,如下:profile

然后再运行编译,即可实现不同环境下的构建发布(或使用mvn指令mvn install -Pdev发布)。