maven 根据环境打包

系统中有很多的配置数据需要在配置文件中,咱们总不能全部写在application.yml中,即使写了application-dev.yml,application-test.yml,application-prod.yml这些文件,但是还是需要把所有的配置写在对应的文件中,只是环境不同,属性值不同罢了,但是这样会导致我们得配置文件中的数据会很多,比较乱!接下来使用另一种方式:

 

 logback-spring.xml 是spring需要的日志,这里没有做特殊处理,就直接按照默认的来就行了,就叫这个名字即可.

resource 下的config 下有三个环境,现在根据不同的环境打包不同的配置到target;

pom的配置如下:

 我把主要的pom代码块贴出来

  <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.springframework.boot</groupId>
                            <artifactId>spring-boot-configuration-processor</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>

        <resources>
            <resource>
                <!--将config文件夹下面的指定环境下的的所有文件,打包到config下面-->
                <directory>src/main/resources/config/${env}</directory>
                <targetPath>${project.build.directory}/classes/config</targetPath>
            </resource>

            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <!--主启动yml-->
                    <include>bootstrap.yml</include>
                    <!--mybatis 打包生成的文件位置,也要打进去-->
                    <include>mapper/**/*</include>
                </includes>
            </resource>
        </resources>
    </build>
    <profiles>
        <profile>
            <!-- 本地开发环境 -->
            <id>dev</id>
            <properties>
                <env>dev</env>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <!-- 测试环境 -->
        <profile>
            <id>test</id>
            <properties>
                <env>test</env>
            </properties>
        </profile>

        <!-- 生产环境 -->
        <profile>
            <id>prod</id>
            <properties>
                <env>prod</env>
            </properties>
        </profile>
    </profiles>

结果:

 

由于spring默认读取application.yml,我们上面只是打包实现了把相应的文件打到target,但是application-datasource.yml 和 application-redis.yml 的数据是读不到的!因此需要在application.yml中添加包含哪些配置文件,这要是为啥要用application-xxx.yml 的格式

 

这样,spring的上下文环境中在启动的时候就会把我们在这里配置的相应的文件加载进上下文的属性环境中去,然后我们就能利用spring注解形式或者 springboot 的注解@ConfigurationProperties类使用我们在配置文件中配置的数据了!

如有不当之处,烦请大佬赐教 一个简单的方式,感谢!共同进步!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值