maven 多环境配置

背景

项目在开发中,有多种环境,之前每次在不同的环境部署都要修改一次配置文件,觉得十分麻烦,而且修改配置文件,不小心很容易出错,就想到了使用maven和springboot的多环境配置。

但是经过研究发现,springboot的多环境只能配置springboot的配置文件,但是在我的项目中除了springboot的配置文件还有其他的文件,故使用maven的多环境配置完成本次需求。

方法

1. 在resource根据不同的环境建立不同的目录,将该环境的配置文件放入目录中。

avatar

2. 配置profile

<profiles>
        <!--本地开发环境-->
        <profile>
            <id>ys</id>
            <properties>
                <profiles.active>ys</profiles.active>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <!--冀北环境-->
        <profile>
            <id>jb</id>
            <properties>
                <profiles.active>jb</profiles.active>
            </properties>
        </profile>
        <!--四川环境-->
        <profile>
            <id>sc</id>
            <properties>
                <profiles.active>sc</profiles.active>
            </properties>
        </profile>
        <!--天津环境-->
        <profile>
            <id>tj</id>
            <properties>
                <profiles.active>tj</profiles.active>
            </properties>
        </profile>
    </profiles>

3. 资源配置

<build>
      <!--为了区分打包的环境,在报名后加入了环境名-->
      <!--打包后的名称为:zeus-admin-2.1-fj.jar-->
        <finalName>${project.artifactId}-${project.version}-${profiles.active}</finalName>

        <resources>
            <resource>
                <directory>src/main/java</directory>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <!--指定要包含的文件-->
                <includes>
                    <include>banner.txt</include>
                    <!--包含static的目录下的所有文件-->
                    <!--一个*指:所有子文件,两个*指:"子"文件与"孙"文件-->
                    <include>static/**</include>
                </includes>
                <!-- 资源根目录排除各环境的配置,使用单独的资源目录来指定 -->
                <excludes>
                    <exclude>hn/**</exclude>
                    <exclude>jb/**</exclude>
                    <exclude>local/**</exclude>
                    <exclude>sc/**</exclude>
                    <exclude>tj/**</exclude>
                    <exclude>ys/**</exclude>
                </excludes>
            </resource>
            <resource>
                <directory>src/main/resources/${profiles.active}</directory>
                <!--是否替换资源中的属性-->
                <filtering>true</filtering>
            </resource>
        </resources>
</build>

4.打包

mvn clean package -DskipTests -P ${profiles.active}
例:mvn clean package -DskipTests -P ys

注意:一定要加clean,否则可能会将其他环境的配置文件打包进去,虽然不影响程序的使用,但是不太好。