Maven部署打包多环境(开发、测试、生产)配置教程

news2025/1/12 10:07:34

Maven打包多环境(开发、测试、生产)配置教程

  • 1、多环境配置的必要性
    • 1.1 没有进行多环境配置进行的操作复杂性
    • 1.2 不影响运行时配置
  • 2、配置方案
    • 2.1 添加profile属性
    • 2.1 添加两个插件
    • 2.3 主配置文件中添加插值变量
  • 3、效果展示
    • 3.1 勾选`prod`环境
    • 3.2 控制台输出结果

1、多环境配置的必要性

1.1 没有进行多环境配置进行的操作复杂性

  1. 配置重复:在每个环境(开发、测试、生产)中,可能需要使用相同的插件、依赖和配置项。这样会导致在每个环境中进行重复的配置。
  2. 环境特定配置:某些配置项可能仅适用于特定环境(例如,数据库连接信息、文件路径等)。如果不进行多环境配置,这些特定于环境的配置项可能会被错误地应用到其他环境。
  3. 构建过程复杂化:由于没有将不同环境的配置分离,开发人员可能需要在每个环境中手动执行一系列配置和构建操作。这样会导致构建过程变得复杂且容易出错。
  4. 维护困难:当项目需要调整配置以适应新环境时,需要在每个环境配置文件中进行相应的修改。这将导致配置文件的维护变得困难且容易出错。

1.2 不影响运行时配置

执行多环境自动化配置后,不会影响我们再IDEA上直接执行RUN操作,此时,主文件的配置会被下图配置替换。
在这里插入图片描述

2、配置方案

2.1 添加profile属性

请注意下属性片段中的注释。

<profiles>
        <profile>
            <!--不同环境Profile的唯一id-->
            <id>dev</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <!--environment是自定义的字段(名字随便起),自定义字段可以有多个,确保与配置文件一致-->
                <environment>dev</environment>
            </properties>
        </profile>
        <profile>
            <id>prod</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <environment>prod</environment>
            </properties>
        </profile>
        <profile>
            <id>test</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <environment>test</environment>
            </properties>
        </profile>
    </profiles>

完成该属性的增加后,Profiles菜单下就出现三个自定义的环境,如下图所示默认激活的是dev环境。

在这里插入图片描述

2.1 添加两个插件

  1. maven-resources-plugin
    用于将资源配置文件中的动态变量进行替换。

  2. maven-antrun-plugin
    用于追加自定义日志消息,在打包时候,在程序执行完毕后控制台打印这是构建哪个环境的日志,使得打包的环境一目了然,避免出现打包错误,导致打包时使用了一个环境的配置,部署时环境搞错了。
    其中 <echo message="[INFO] ${environment} 环境打包执行成功"/>就引用了environment属性。

    <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <executions>
                    <execution>
                        <id>default-resources</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>target/classes</outputDirectory>
                            <useDefaultDelimiters>false</useDefaultDelimiters>
                            <delimiters>
                                <delimiter>@</delimiter>
                            </delimiters>
                            <resources>
                                <resource>
                                    <directory>src/main/java</directory>
                                    <includes>
                                        <include>**/*.xml</include>
                                    </includes>
                                    <filtering>true</filtering>
                                </resource>
                                <resource>
                                    <directory>src/main/resources/</directory>
                                    <filtering>true</filtering>
                                    <includes>
                                        <include>**/*.yml</include>
                                    </includes>
                                </resource>
                                <resource>
                                    <directory>src/main/resources/</directory>
                                    <excludes>
                                        <exclude>**/*.yml</exclude>
                                    </excludes>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>1.3</version>
                <executions>
                    <execution>
                        <id>print-custom-info</id>
                        <phase>package</phase>
                        <configuration>
                            <tasks>
                                <echo message="[INFO] ${environment} 环境打包执行成功"/>
                            </tasks>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

        </plugins>

2.3 主配置文件中添加插值变量

在这里插入图片描述
请注意:主配置文件中引用的环境变量使用两个@,有的是${},这个可以在2.1中的插件进行配置。

<delimiters>
  <delimiter>@</delimiter>
</delimiters>

3、效果展示

3.1 勾选prod环境

在这里插入图片描述

3.2 控制台输出结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/999030.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Archery- SQL审核查询平台告警通知设置

邮箱通知 进入系统管理-》配置项管理 工单通知分类里面 ARCHERY_BASE_URL:平台地址,告警通知的时候可以点此链接跳转,访问审核sql详情页 DDL_NOTIFY_AUTH_GROUP:DDL工单通知权限组名,对应权限组管理页面的名称,为空则不通知,仅DDL工单执行完毕时会进行通知 NOTIFY_P…

基于SSM的助学贷款管理系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

【Redis】.net core Redis事件订阅与发布,基础篇

2023年&#xff0c;第38周。给自己一个目标&#xff0c;然后坚持总会有收货&#xff0c;不信你试试&#xff01; 发布与订阅&#xff08;Publish/Subscribe&#xff0c;也简称为 Pub/Sub&#xff09;是一种消息传递模式&#xff0c;用于解耦发布者和订阅者之间的关系。 目录 一…

离散性行业介绍及与MES系统的好处

离散型行业是指那些生产、制造或提供一种有形产品或明确定义的服务的行业&#xff0c;这些产品或服务通常可以分为离散的单位&#xff0c;而且它们的生产通常遵循一定的工序或流程。与连续型行业不同&#xff0c;离散型行业的生产过程通常是间断的&#xff0c;而不是连续的。 …

【ArcGIS Pro二次开发】(66):三调规程_土地利用现状分类面积汇总表

之前做了一个三调的土地利用现状分类统计表&#xff0c;是按照自己的习惯做的&#xff0c;发现不符合土规专业的要求&#xff0c;于是翻开三调规程&#xff0c;按规范重新制作。 一、要实现的功能 如上图所示&#xff0c;在【规划应用】组—【三调】面板下&#xff0c;点击【1、…

若依vue前端 报错error:0308010C:digital envelope routines::unsupported

第一步: 直接打开package.json 第二步: 直接替换scripts的内容为下面的内容 "scripts": {"dev": "SET NODE_OPTIONS--openssl-legacy-provider && vue-cli-service serve","build:prod": "SET NODE_OPTIONS--openssl-leg…

【虹科案例】​使用虹科数字化仪测量遥远恒星的直径

加那利群岛拉帕尔马岛的 MAGIC 望远镜是为了观测发射高能伽马射线的宇宙物体&#xff08;即超新星或黑洞&#xff09;而建造的。天文学家使用双望远镜测量恒星的直径&#xff0c;以研究其整个生命周期的过程。对于地球上的望远镜来说&#xff0c;这是一项具有挑战性的任务&…

第二证券:5分钟k线图买卖技巧?

K线图是股票交易中最常用的技术剖析工具。而5分钟K线图则是其间的一种常见方式。那么如安在5分钟K线图上找到生意的时机呢&#xff1f;下面从几个视点剖析一下这个问题。 一、研讨商场趋势 在5分钟K线图上&#xff0c;商场走势的方向和力度非常重要。一般来说&#xff0c;假如…

尚硅谷大数据项目《在线教育之离线数仓》笔记008

视频地址&#xff1a;尚硅谷大数据项目《在线教育之离线数仓》_哔哩哔哩_bilibili 目录 P123 P124 P125 P126 P127 P128 P129 P123 Apache Superset是一个现代的数据探索和可视化平台。它功能强大且十分易用&#xff0c;可对接各种数据源&#xff0c;包括很多现代的大数…

网络安全实战对抗中的观察与思考

在本次攻防演练的过程中&#xff0c;绿盟科技M-SEC社区监测并确认了上百个漏洞在被积极利用&#xff0c;其中0day和1day漏洞的数量较往年有所提升&#xff0c;但nday漏洞依然是主力。 近日&#xff0c;一场行业瞩目的大型实战化网络安全攻防演练活动落下帷幕&#xff0c;在这场…

Hadoop之HDFS使用命令(常用)

本篇仅记载部分常用命令 若无所需命令可查看官方网站Apache Hadoop 3.3.6 – Overview 注&#xff1a;一切命令仅在启动HDFS集群后执行&#xff0c;否则会报错 注&#xff1a;仅在hadoop用户下操作 在Linux中超级用户是&#xff1a;root 但HDFS的超级用户是&#xff1a;启动n…

Gateway核心架构

1 Gateway核心架构 1.1 基本概念 路由(Route) 是 gateway 中最基本的组件之一&#xff0c;表示一个具体的路由信息载体。主要定义了下面的几个信息: id&#xff0c;路由标识符&#xff0c;区别于其他 Route。uri&#xff0c;路由指向的目的地 uri&#xff0c;即客户端请求最终…

EasyRecovery易恢复2023最新免费的电脑数据恢复软件

EasyRecovery是一款非常专业的硬盘数据恢复工具&#xff0c;EasyRecovery拥有磁盘诊断、数据恢复、文件修复、E-mail 修复等功能。有了EasyRecovery&#xff0c;你可以把误删&#xff0c;被破坏的文件&#xff0c;格式化的磁盘轻轻松松的找回来。小伙伴们可以使用EasyRecovery恢…

AWS EC2入门指南中创建和配置云虚拟机实例的基本步骤

文章目录 创建 AWS 账户登录 AWS 控制台导航到 EC2 控制台启动 EC2 实例选择 AMI&#xff08;Amazon Machine Image&#xff09;选择实例类型配置实例添加存储审查和启动实例创建密钥对 连接到 EC2 实例管理 EC2 实例了解定价和计费结论 &#x1f388;个人主页&#xff1a;程序…

预售33.8万元起:全新蔚来EC6开始接受预订,四驱标配 + 电动尾翼

蔚来汽车近日宣布&#xff0c;全新款EC6已经开始接受预订。从9月15日开始&#xff0c;广大消费者可以参与试驾活动&#xff0c;亲身体验这款定位为智能电动轿跑SUV的新车带来的魅力。据悉&#xff0c;这款车型将于9月16日开始交付&#xff0c;预售价格为33.8万元起&#xff0c;…

寻找联想集团的AI预期差

股票市场中最重要的因素是什么&#xff1f;不是技术分析&#xff0c;也不是基本面分析&#xff0c;而是预期差。 当下的市场&#xff0c;是复杂与困难的&#xff0c;想要在迷雾中看清方向&#xff0c;就要寻找更高的确定性&#xff0c;以及更大的预期差。 今天能大家分享一下联…

【Arduino29】74HC595控制LED灯

硬件准备 74HC595直插芯片&#xff1a;1 个 绿色LED灯&#xff1a;4 个 红色LED灯&#xff1a;4 个 220欧的电阻&#xff1a;8个 面包板&#xff1a;1个 杜邦线&#xff1a;若干 硬件连线 软件程序 #define DS_pin 11 //DS引脚 #define STCP_pin 8 //ST_CP引脚,输出…

海学会读《乡村振兴战略下传统村落文化旅游设计》2023年度许少辉八一新书

海学会读《乡村振兴战略下传统村落文化旅游设计》2023年度许少辉八一新书

Ubantu终端常用命令、快捷键和基本操作

目录 前言 一、常用命令 二、常用快捷键 三、快捷键自定义设置 总结 前言 Ubantu终端常用命令和快捷键用于进行系统管理、文件操作、软件安装等常见使用场景。使用它们可以提高工作效率&#xff0c;简化操作流程&#xff0c;并进行更多的自定义配置和控制。同时&#xff0c…

Docker的开源容器镜像仓库Harbor安装

概述 Docker Hub是Docker官方提供的在线Docker镜像注册中心&#xff0c;其支持Docker镜像的查询&#xff08;search&#xff09;、提交&#xff08;push&#xff09;以及获取&#xff08;pull&#xff09;。目前&#xff0c;在云原生领域中&#xff0c;CNCF提供Harbor开源版本…