作用
打包编译是读取资源文件问题
示例说明
此处resouce的作用为:
我们在打包的时候,可以做在idea的Maven窗口勾选相应环境,这样可以无需修改yml配置,更方便一些
此处代码就是针对以上来的
1、根据勾选的环境,打包是只打包制定环境变量的文件,避免泄露其他环境信息
2、根据勾选的环境,用pom文件配置的变量替换yml中配置的变量值,如此处就是替换yml中spring.profiles.active的值为勾选的环境变量
<resources>
<resource>
<filtering>false</filtering>
<directory>src/main/resources</directory>
<excludes>
<exclude>bootstrap-dev.yml</exclude>
<exclude>bootstrap-test.yml</exclude>
<exclude>bootstrap-prod.yml</exclude>
</excludes>
</resource>
<resource>
<filtering>true</filtering>
<directory>src/main/resources</directory>
<includes>
<include>bootstrap-${profiles.active}.yml</include>
<include>bootstrap.yml</include>
</includes>
</resource>
</resources>
<profiles>
<profile>
<!-- 本地开发环境 -->
<id>dev</id>
<properties>
<profiles.active>dev</profiles.active>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</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>
滥用resouces常见问题
Q1: Maven打包报错,input length = 1 ->
原因:filtering设置为true,表示会读取directory下的所有文件,并进行替换,如果directory的文件有非yml的文件,如xlsx时就会出现此问题
解决方案:一般include和exculde是一起使用,当我们要正确使用include,exculde,在include下使用filtering=true,在exculde下使用filtering=false