maven-maven使用-P参数打包不同环境问题

 更新时间:2023年11月18日 09:55:40   作者:iiaythi  
这篇文章主要介绍了maven-maven使用-P参数打包不同环境问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

maven-maven使用-P参数打包不同环境

一般的,开发环境有dev, test 和 pro,他们的配置多有不同,那么就可以使用 maven -P这个参数进行多环境打包

clean install -Dmaven.test.skip=true -P pro,就可以切换成生产环境,和 jenkins 配合简直不要太爽!!

举个例子

以 boot 项目来说,现有目录结构:

/src
    /main
        /java
        /resources
            /static
            /templates
            application.yml
            application-dev.yml
            application-pro.yml
            application-test.yml

application.yml:

server:
  port: 8080
spring:
  profiles:
     # @spring.profiles.active@ 变量将会随着参数的传入被替换
    active: @spring.profiles.active@

然后三个不同环境的配置文件分别为:

application-dev.yml:

server:
  port: 8080
spring:
  application:
    name: mpp-dev

application-pro.yml:

server:
  port: 8081
spring:
  application:
    name: mpp-pro

application-test.yml:

server:
  port: 8082
spring:
  application:
    name: mpp-test

配置 maven 的 pom 文件,默认激活 dev 环境:

<profiles>
    <profile>
        <id>dev</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <spring.profiles.active>dev</spring.profiles.active>
        </properties>
    </profile>
    <profile>
        <id>test</id>
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>
        <properties>
            <spring.profiles.active>test</spring.profiles.active>
        </properties>
    </profile>
    <profile>
        <id>pro</id>
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>
        <properties>
            //spring.profiles.active即在application.yml文件中
            //定义的参数@spring.profiles.active@
            <spring.profiles.active>pro</spring.profiles.active>
        </properties>
    </profile>
</profiles>

根据环境过滤只有当前环境的配置文件:

<resources>
    <resource>
        <directory>src/main/resources</directory>
        <!-- 替换占位符-->
        <filtering>true</filtering>
        <excludes>
            <exclude>application-*.yml</exclude>
        </excludes>
    </resource>
    <resource>
        <directory>src/main/resources</directory>
        <!-- 替换占位符-->
        <filtering>true</filtering>
        <includes>
            <include>application-${spring.profiles.active}.yml</include>
        </includes>
    </resource>
</resources>

需要加入 plugin 为:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <version>3.1.0</version>
</plugin>

测试

在当前项目 pom 文件所在的目录下打开命令行,输入 clean package -Dmaven.test.skip=true -P pro

可以看到:

/target
    /classes
        /com
        application.yml
        application-pro.yml

打开 application.yml 文件:

server:
  port: 8080
spring:
  profiles:
    active: pro

可以发现之前 @spring.profiles.active@ 变量已经被替换成了 pro ,而且配置文件只关于生产环境,而且dev 和 test 的配置文件都已经被过滤了

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java中Builder模式的实现详解

    Java中Builder模式的实现详解

    在设计模式中对Builder模式的定义是用于构建复杂对象的一种模式,所构建的对象往往需要多步初始化或赋值才能完成。下面这篇文章主要给大家介绍了在Java各个版本中Builder模式实现的相关资料,文中介绍的非常详细,需要的朋友可以参考学习。
    2017-05-05
  • Spring中@order注解用法实战教程

    Spring中@order注解用法实战教程

    @Order注解主要用来控制配置类的加载顺序,数字越小,越先加载,下面这篇文章主要给大家介绍了关于Spring中@order注解用法的相关资料,需要的朋友可以参考下
    2022-11-11
  • Java中泛型总结(推荐)

    Java中泛型总结(推荐)

    这篇文章主要介绍了Java中泛型总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • 在Java编程中使用正则表达式的基本方法

    在Java编程中使用正则表达式的基本方法

    这篇文章主要介绍了在Java编程中使用正则表达式的基本方法,是Java入门学习中的基础知识,需要的朋友可以参考下
    2015-11-11
  • Java内存区域与内存溢出异常详解

    Java内存区域与内存溢出异常详解

    这篇文章主要介绍了Java内存区域与内存溢出异常详解的相关资料,需要的朋友可以参考下
    2017-03-03
  • java创建excel示例(jxl使用方法)

    java创建excel示例(jxl使用方法)

    Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新 已经存在的Excel文件。下面是使用方法,包括去掉网格线、字体设置、单元格设置、对齐方式等设置
    2014-03-03
  • java多线程编程实现下雪效果

    java多线程编程实现下雪效果

    这篇文章主要介绍了java多线程编程实现下雪效果的相关资料,需要的朋友可以参考下
    2015-11-11
  • Java中的ReentrantReadWriteLock使用详解

    Java中的ReentrantReadWriteLock使用详解

    这篇文章主要介绍了Java中的ReentrantReadWriteLock使用详解,ReentrantReadWriteLock是Java中的一个锁实现,它提供了读写分离的功能,这种读写分离的机制可以提高并发性能,特别适用于读多写少的场景,需要的朋友可以参考下
    2023-11-11
  • 使用@Valid 校验嵌套对象

    使用@Valid 校验嵌套对象

    这篇文章主要介绍了使用@Valid 校验嵌套对象方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • Spring MVC 中获取session的几种方法(小结)

    Spring MVC 中获取session的几种方法(小结)

    这篇文章主要介绍了Spring MVC 中获取session的几种方法(小结),具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09

最新评论