SpringBoot初识(四)——Maven多环境配置

Maven多环境有什么好处

    在日常项目开发中,我们经常需要在开发环境、测试环境、生产环境等情况下进行项目的部署,对于配置文件来说,如果无法识别各个环境,就意味着当我们在进行开发时,需要将配置文件的内容更改为测试环境,而在进行生产部署时,又需要将其内容改为生产内容。这对于一个长期项目来说简直是灾难性的,因为我们需要将更多的精力放在无关系统功能的层面,而Maven多环境配置的出现恰恰帮我们解决了这些。接下来我们通过一个简单的例子来实现相应功能。

Maven多环境配置

    假设我们现在有开发和生产两个环境(当然在实际开发过程中,可能部署环境会多于这两个)。那么我们如何进行切换呢。
    紧接上一节内容,我们复制一个chapter_3的文件夹,内容与chapter_2相同。然后在resources文件夹下新建appliaction-dev.yml及appliaction-prod.yml两个文件(注意,这两个文件应采用application-name.yml的格式,以便后期可以根据多环境查找到),并将application.yml的内容各复制一份到对应文件中。
pom文件中添加如下内容:

<profiles>
    <profile>
        <id>devid>
        <properties>
            <profileActive>devprofileActive>
        properties>
        <activation>
            
            <activeByDefault>trueactiveByDefault>
        activation>
    profile>
    <profile>
        <id>prodid>
        <properties>
            <profileActive>prodprofileActive>
        properties>
    profile>
profiles>
<build>
    <resources>
        <resource>
            <directory>src/main/resourcesdirectory>
                <filtering>truefiltering>
                <excludes>
                    <exclude>**/*exclude>
                excludes>
            resource>

            <resource>
                <directory>src/main/resourcesdirectory>
                <filtering>truefiltering>
                <includes>
                    <include>application.ymlinclude>
                    <include>application-${profileActive}.ymlinclude>
                includes>
            resource>
        resources>

        <plugins>
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
            plugin>

            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-surefire-pluginartifactId>
                <configuration>
                    <skip>trueskip>
                configuration>
            plugin>
        plugins>
    build>

application.yml文件内容如下:

spring:
  profiles:
    active: @profileActive@

application-dev.yml文件内容如下:

server:
  port: 8090

#自定义的属性
my:
  name: willem,from dev

application-prod.yml文件内容如下:

server:
  port: 8090

#自定义的属性
my:
  name: willem,from prod

启动项目并通过postman进行访问,结果如下
SpringBoot初识(四)——Maven多环境配置_第1张图片
可以看出,此时访问得到的内容为application-dev.yml中的内容。
若我们将pom.xml文件中prod的activeByDefault设置为true,再次启动项目,会得到如下结果
SpringBoot初识(四)——Maven多环境配置_第2张图片
此时得到的内容为application-prod.yml中的内容。通过maven多环境的配置,我们实现了程序的便利性,只需在不同环境是应用不同而选项,就可以轻而易举的将项目打包为我们想要的样子。
项目目录结构如下
SpringBoot初识(四)——Maven多环境配置_第3张图片
项目地址:https://github.com/Willem520/spring-boot-learning.git,源码位于chapter_3文件夹下

你可能感兴趣的:(SpringBoot)