SpringBoot部署快速切换配置文件

107 阅读1分钟

前言:

我们平时使用SpringBoot开发和部署时环境不相同,需要修改配置文件进行环境切换,每次部署,都得修改,及其不方便,所以记录一下使用maven打包是便捷切换环境。

1. pom文件

image.png

默认情况下,maven打包时会包含resources下所有的文件

如果我们只想让指定的几个文件被打包,那就将这几个文件放在includes标签下处理

同理: 如果我们不想让这几个文件被打包,那就将这几个文件放在excludes标签下处理

filtering:开启过滤,用指定的参数替换directory下的文件中的参数

directory:指定资源文件的位置

  1. filtering用于打包时扩大maven替换占位符属性的范围, true表示会替换所在resource标签确定的文件范围内的占位符属性
  2. include和exclude用于打包时资源过滤, 主要目的是把resources下不想要的文件排除掉,不打进包中.
  3. 它俩都是resource标签下的子标签, 一个用于过滤资源,一个用于是否替换占位符属性, 一般都是搭配使用, 但两者功能迥异.
<build>
    <finalName>tj-letter-acceptance-handling</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <fork>true</fork><!-- fork:如果没有该配置,这个devtools不会起作用,即应用不会restart -->
                <includeSystemScope>true</includeSystemScope><!--外部引入的jar包打包到项目-->
            </configuration>
            <version>2.5.6</version>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>3.0.0</version>
            <configuration>
                <failOnMissingWebXml>false</failOnMissingWebXml>
                <warName>${project.artifactId}</warName>
            </configuration>
        </plugin>
    </plugins>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <excludes>
                <!-- 排除该文件 -->
                <exclude>application-*.yml</exclude>
            </excludes>
        </resource>
        <!--表示读取该目录的所有文件-->
        <resource>
            <!-- 指定资源文件的位置 -->
            <directory>src/main/resources</directory>
            <!-- 开启过滤,用指定的参数替换directory下的文件中的参数 -->
            <filtering>true</filtering>
            <!-- 需要打包的文件-->
            <includes>
                <include>*.properties</include>
                <include>*.xml</include>
                <include>application.yml</include>
                <include>application-${env}*.yml</include>
            </includes>
        </resource>
    </resources>
</build>

<!--配置环境的profile 跟配置文件对应-->
<profiles>
    <profile>
        <id>dev</id>
        <properties>
            <env>dev</env>
        </properties>
        <activation>
            <!-- 默认选中 -->
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    <profile>
        <id>prod</id>
        <properties>
            <env>prod</env>
        </properties>
    </profile>
    <profile>
        <id>dep</id>
        <properties>
            <env>dep</env>
        </properties>
    </profile>
</profiles>

2.配置文件

image.png

3.maven

image.png

使用maven部署或者启动项目时,在此处切换环境,即可达到效果。