maven 多模块打包 每个模块 多 环境 yml 的具体配置

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生效 【同字段】

原文地址:https://www.cnblogs.com/c2g5201314/p/15780312.html