SpringBoot学习笔记三之【多Profile文件的Maven发布使用】

在springboot工程中配置文件编写的时候可以使用application-{profile}.properties/yml,默认使用application.properties/yml,例如:

SpringBoot学习笔记三之【多Profile文件的Maven发布使用】

每个环境配置如下:

#application-dev.properties
server.port=8080
#application-test.properties
server.port=8082
#application-dev.properties
server.port=80

我们可以在application.properties/yml指定**哪个环境的配置文件,我们在发布的时候最终都是读取application.properties/yml中的配置:

#yml
  spring:
    profiles:
      active: @[email protected] # 和我们pom.xml中的指定resource配置相同
#properties
spring.profiles.active=dev

pom.xml配置如下:

<dependencies>
        <!-- Add typical dependencies for a web application web应用的依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>
    <!-- Package as an executable jar 可以将应用打成一个可执行的jar,通过java -jar,下面我会演示 -->
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <!-- 是否替换@[email protected]表示的maven properties属性值 -->
                <filtering>true</filtering>
            </resource>
            <!-- profile -->
            <resource>
                <directory>${project.basedir}/src/main/profiles/${profiles.active}</directory>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>dev</id>
            <properties>
                <profiles.active>dev</profiles.active>
            </properties>
        </profile>

        <profile>
            <id>test</id>
            <properties>
                <profiles.active>test</profiles.active>
            </properties>
        </profile>

        <profile>
            <id>prod</id>
            <properties>
                <profiles.active>prod</profiles.active>
            </properties>
        </profile>
    </profiles>

或者我们通过命令行指定:

java -jar springboot-swk.jar --spring.profiles.active=dev
#使用maven打包命令
mvn clean package -Dmaven.test.skip=true -P prod

配置文件的加载位置优先级由高到低如下,并且高优先级覆盖低优先级,高优先级没有的配置使用低优先级互补

-file:./config/
-file:./
-classpath:/config/
-classpath:/

我们也可以通过在application.properties中修改加载文件的位置

spring.config.location=

当我们把配置都准备完毕之后,在idea右侧会出现Profiles选项如下:

SpringBoot学习笔记三之【多Profile文件的Maven发布使用】

这样我们就可以选中不同profile环境,然后执行install执行打包

当我们选中dev时,启动生成的jar

SpringBoot学习笔记三之【多Profile文件的Maven发布使用】

当我们选中prod时

SpringBoot学习笔记三之【多Profile文件的Maven发布使用】

如果我们打包时想跳过测试,右击install,选择create

SpringBoot学习笔记三之【多Profile文件的Maven发布使用】