1.网上找不到具体说明maven 多模块,其中每个模块有多个环境yml配置文件 具体该怎么设计
琢磨了半天并验证 ,总结如下
1.在需要配置多环境的子模块工程里 的 resources 里 配置多个application.yml ,其他的使用 application-[自定义].yml 格式新建,如 application-pro.yml
2.有多个配置文件时,application.yml 这个文件仅作引入其他 yml使用,不写 具体的配置数据
3.每个子模块里的pom.xml文件需要在 <build> 标签里添加 <resources> 配置,如果没有设计,会导致不论是开发工具启动还是打包 都会引入所有yml
4.不是所有工程都需要配置多yml ,不影响默认 application.yml 的使用,
如zuul、 eureka等 不论是本地还是生产 ,都没有配置区别 ,可以不做yml配置,以前是什么就是什么
5.需要在最大父级pom.xml配置<profiles>,这样idea 的maven结构会显示profiles的选择框
6.有些会显示jdk版本,那是因为在maven的setting.xml设置了 <profiles>,
具体配置看下面内容
7.不论是打包还是开发工具启动 ,都需要选择 profiles ,如果不选择,会导致全部yml都生产并运行 ,最终导致排列最后一个yml生效 【同字段】
8.切换yml打包时记得先clean后再package
2.配置
看下结构
配置 jdk版本
在当前 项目使用的 maven 找到setting.xml文件,
不知道的可以查看idea设置里
找到 <settings> 》 <profiles> 里添加
<profile> <id>jdk-1.8</id> <activation> <activeByDefault>true</activeByDefault> <jdk>1.8</jdk> </activation> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion> </properties> </profile>
保存即可
父级 pom.xml 添加 配置
<profiles>
<!-- dev开发环境配置,pro为生产环境配置 -->
<profile>
<id>dev</id>
<properties>
<profileActive>dev</profileActive>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>pro</id>
<properties>
<profileActive>pro</profileActive>
</properties>
</profile>
</profiles>
在需要配置多yml的工程里添加添加yml文件
其中application.yml 文件只需要配置下面这点
spring:
profiles:
active: @profileActive@
其他的根据以前配置 application.yml 的格式配置 ,这里就不展示具体内容了
现在点一下刷新maven就出来选项了
不论是打包还是开发工具启动 ,都需要选择 profiles ,如果不选择,会导致全部yml都生成并运行 ,最终导致排列最后一个yml生效 【同字段】