Maven-按指定环境打包

对于有多个环境配置(比如dev、test、prod等)的SpringBoot项目,其打包和启动有两种方式,第一种是把不通环境配置文件都打包,然后在启动时,通过-Dspring.profiles.active=test或者--spring.profiles.active=test参数指定要启动的环境;第二种是打包的时候就只打包某个环境的配置文件进去,启动时则不会通过参数指定环境(因为jar包中只有一个环境)。

本文主要介绍如何用maven只打包某个指定的环境配置,通过在pom.xml文件中配置profile和build可以实现。

  1. 新增profiles标签,与build标签同级。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
       <profiles>
    <profile>
    <!-- 测试环境 -->
    <id>test</id>
    <properties>
    <profiles.active>test</profiles.active>
    </properties>
    </profile>
    <profile>
    <!-- 开发环境 -->
    <id>dev</id>
    <!-- 默认打包环境为开发环境 -->
    <activation>
    <activeByDefault>true</activeByDefault>
    </activation>
           <properties>
    <profiles.active>dev</profiles.active>
    </properties>
    </profile>
    </profiles>
  2. 在build标签下,配置resources,指定需要打包那些文件到jar里。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <build>
    <!-- 打包后的名字(MyApplication.war) -->
    <finalName>MyApplication</finalName>
    <resources>
    <resource>
    <directory>src/main/java</directory>
    <includes>
    <!-- 打包时要把mapper.xml也打进去! -->
    <include>**/*.xml</include>
    </includes>
    </resource>
    <resource>
    <directory>src/main/resources</directory>
    <!-- 资源根目录排除各环境的配置,使用单独的资源目录来指定 -->
    <excludes>
    <exclude>test/*</exclude>
    <exclude>dev/*</exclude>
    </excludes>
    </resource>
    <resource>
    <directory>src/main/resources/${profiles.active}</directory>
    </resource>
    </resources>
    </build>
  3. 在项目的resource文件夹下新建test、dev,分别放测试环境、开发环境的配置文件,打包的时候使用指定环境命令接口:mvn package -Ptest或者mvn package -Pdev

  1. 如果是在IDEA中,通过IDAE中的maven插件来打包,打开IDEA的maven界面后,先勾选需要打包的profile,然后执行clean->package命令。注意:有时候因为target下内容被打开状态或者项目运行中会导致clean失败。
------ 本文完 ------