maven profile filter 线上线下分开打包配置

maven自动选择不同的配置文件打包profile+filter

1. profile:
[要点:] activeByDefault默认激活,不用再mvn命令时指定额外参数;
[注意:] 使用非默认的配置,要在编译时指定:如,要在生产环境打包[并跳过单元测试]:
mvn clean package -Pproduct [-Dmaven.test.skip=ture]

如果mvn clean package:

a. 默认加载profile-dev.properties来打包
b. 可以替换的内容范围是:
src/main/resources/*.xml|*.properties...
src/main/java/*.xml
<project>
    <build>
        <finalName>project-name</finalName>
        <!-- 启用filter功能为resources中的变量赋值 -->  
        <resources>  
            <resource>  
                <directory>src/main/resources</directory>
                    <includes>
                        <include>**/*</include>
                    </includes>
                    <filtering>true</filtering>  
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>  
    </build>

    <profiles>
        <!-- 1.开发环境 -->
        <profile>
            <id>dev</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <build>
                <filters>
                    <filter>profile-dev.properties</filter>
                </filters>
            </build>
        </profile>

        <!-- 2.测试环境 -->
        <profile>
            <id>test</id>
            <build>
                <filters>
                    <filter>profile-test.properties</filter>
                </filters>
            </build>
        </profile>

        <!-- 3.UAT环境 -->
        <profile>
            <id>uat</id>
            <build>
                <filters>
                    <filter>profile-uat.properties</filter>
                </filters>
            </build>
        </profile>

        <!-- 4.生产环境 -->
        <profile>
            <id>product</id>
            <build>
                <filters>
                    <filter>profile-product.properties</filter>
                </filters>
            </build>
        </profile>
    </profiles>
</project>
2. 用法:

比如profile-dev.properties文件中定义了

mvn.mysql.url.mydb=jdbc:mysql://localhost:3306/mydb
mvn.mysql.user.mydb=root
mvn.mysql.pass.mydb=1234

那么可以在其他公用配置文件中使用${}来引用profile-dev.properties中的属性,比如:
(1). db.properties中:

db.url=${mvn.mysql.url.mydb} 
db.user=${mvn.mysql.user.mydb}
db.pass=${mvn.mysql.pass.mydb}

(2) spring-ds.xml中:(用法1)

    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
        <property name="url" value="${mvn.mysql.url.mydb}"/>
        <property name="username" value="${mvn.mysql.user.mydb}"/>
        <property name="password" value="${mvn.mysql.pass.mydb}"/>
    </bean>

spring-ds.xml中,也可以使用这样:(用法2-引用再引用)

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
        <property name="url" value="${db.url}"/>
        <property name="username" value="${db.user}"/>
        <property name="password" value="${db.pass}"/>
</bean>
Spring Boot配置加密实战:Jasypt集成与安全最佳实践 在应用开发中,配置管理是连接代码与运行环境的关键环节,尤其涉及数据库连接、API密钥等敏感信息时,安全存储成为工程实践的必备考量。其核心原理在于通过透明加解密机制,在不改变原有配置读取流程的前提下,对敏感值进行加密处理,实现配置与密钥的分离。这项技术的核心价值在于显著提升应用的安全性基线,有效防止代码仓库泄露导致的敏感信息暴露。典型的应用场景包括Spring Boot项目的生产环境部署、微服务架构中的配置中心集成,以及需要符合安全审计要求的金融、政务系统。本文聚焦于Jasypt这一成熟的Java加密库,详细 阅读详情

相关推荐

Maven版本管理

Maven实现集中版本管理工具,整套开发视频源码以及开发文档。

使用maven的profile区分本地环境和线上环境

使用maven的profile区分本地环境和线上环境 多环境开发,使用maven-profile,就可以在打包的时候通过参数的调整,最终打的包也不同。 以区分本地数据库和线上数据库为例 比如测试环境,用的是本地测试数据库;生产环境用的是线上生产库 针对不同库的url,userName,password,就可以配两套,通过profile区分,然后打包的时候就可以区分了 具体使用: 1.在pom.xm...

zhangsir的博客 9520

【STM32】433MHz OOK信号软解码实战:从EV1527协议到嵌入式实现

本文详细介绍了基于STM32微控制器实现433MHz OOK信号软解码的完整实战过程。文章从EV1527协议解析入手,重点阐述了利用STM32的GPIO和定时器进行信号采样、脉宽还原、同步头识别以及数据位判决的核心算法,并提供了对抗无线干扰的容错优化策略,帮助开发者深入理解并掌握低成本无线通信的嵌入式实现方案。

weixin_29299807的博客 785

Steam Machine 换装 Windows 11 全攻略:驱动安装与游戏实测

在 x86 迷你主机上更换操作系统,核心在于解决驱动兼容性与启动引导问题。其原理是通过 BIOS 调整启动模式与硬盘控制器,再安装通用驱动,从而释放硬件在 Windows 生态下的完整软件兼容性。这一过程的技术价值在于让客厅游戏终端兼顾办公与独占游戏,典型场景包括 Steam Machine 等设备。针对这类设备,需特别注意显卡与无线网卡驱动的获取顺序,并提前准备有线网络。本文围绕 Steam Machine 换装 Windows 11 的实操,详解驱动安装与游戏表现。

weixin_33968104的博客 453

别再只会regress了!用Stata的csdid命令搞定多期DID的完整实操指南

本文详细介绍了如何在Stata中使用csdid命令进行多期DID分析,解决传统DID方法在交错处理场景下的局限性。通过完整的实操指南,包括环境搭建、核心语法、结果解读和高阶应用,帮助研究者更准确地评估政策效果,适用于计量经济学和实证研究领域。

weixin_30236595的博客 582

python编程实现制作网络流量监控动画

c,实时显示网络带宽使用情况,用柱状图或折线图表示不同时间段的流量变化。通过 Python编程实现图形库(如 Pygame、Tkinter、Matplotlib 等)来实现计算机网络基础概念的可视化动画。global bars # 声明 bars 为全局变量。# 获取当前网络流量。# 创建图形和坐标轴。

qq_42788199的博客 718

maven多环境配置,区分本地、线上环境配置文件

公司在使用jenkins部署测试环境代码,直接发布war包的话配置文件得修改,很影响开发,于是 使用maven的profiles来配置多环境配置文件,方便部署 1、在pom文件中添加profiles节点 每一个profile子节点代表一个环境,id代表maven部署打包时指定的环境参数,profiles.active节点指定当前环境的配置文件所在目录,该目录是相对于src/main/resour...

dlz_Mr的博客 1007

TP4056锂电池充电电路设计原理与工程实践

锂离子电池充电管理是嵌入式电源系统的核心基础技术,其本质是通过恒流恒压(CC/CV)控制策略,匹配电池电化学特性以实现安全、高效、长寿命充放电。TP4056作为典型线性充电IC,以精简外围实现预充、恒流、恒压及自动截止全周期管理,但受限于线性拓扑的热耗散特性,必须协同散热设计、电阻精度选型与PCB布局进行系统级优化。该方案广泛应用于STM32智能小车、便携传感器节点等3.7V单节锂电供电场景,兼顾成本、可靠性与工程可实施性,是入门嵌入式硬件电源设计的关键实践范例。

weixin_36064575的博客 224

Maven 打包 关于线下能运行不能打包的原因

一 .检查maven 打包报错类 有没有 main 方法,如果这个类被调用了,请删掉里面的main 方法。 二.如果并没有main 方法还报错,请按这个博客做。我没有遇见过,但是可以尝试。 http://blog.youkuaiyun.com/qq_26678239/article/details/52056815

Rain 1546

基于 MATLAB BP 神经网络的财务预测

通过基于 MATLAB BP 神经网络的财务预警模型,我们可以对企业的财务风险进行有效地识别和预测。在具体实现过程中,需要注意对财务数据的预处理、模型参数的调整以及结果的解释等问题。MLP模型的输入层、输出层和隐含层之间均为全连接,每个神经元都是上一层神经元的加权求和再加偏置后的非线性变换。其中,输入层接受财务数据,输出层输出财务预测结果,隐含层则对输入数据进行处理和抽象。其中,X’是标准化后的值,X是原始值,μ_i 和σ_i 分别是指标 i 在样本中的均值和标准差。其中,X’是标准化后的值,X是原始值。

TechPulseZ的博客 922

CVAEGAN实现锂离子电池EIS数据增强:基于健康状态的阻抗谱生成

本文提出了一种基于CVAEGAN的锂离子电池EIS数据增强方法。该方法结合了变分自编码器和生成对抗网络的优点,能够根据指定的健康状态(SoH)生成高质量的EIS阻抗谱数据。文章详细介绍了数据预处理流程、模型架构设计(包括编码器、解码器和判别器),并提供了完整的PyTorch实现代码。通过条件生成的方式,该方法可以有效解决电池健康评估中标注数据不足的问题,为基于数据驱动的电池诊断提供更丰富的训练样本。实验结果表明,生成的EIS数据具有良好的真实性和多样性,可用于增强电池健康状态评估模型的性能。

huanghm88的专栏 499

Maven | filtering,filter和profile标签使用

博客引用处(以下内容在原有博客基础上进行补充或更改,谢谢这些大牛的博客指导): Maven的filtering和profile标签使用 使用Maven 将项目分版 前言 每个项目通常都会用不同的配置文件对应不同的版本,例如开发版和上线版本的配置通常会是不同的。此时就会产生一个问题,当项目需要从开发版切换到上线版时,总是会避免不了更改很多配置项,或者切换配置文件,但是不管哪一种都不方便配置。使用M...

Willian的博客屋 1903

[QMT量化交易小白入门]-七十六、从tick数据中获取高频交易的量价背离信号

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。

木头大左的博客 791

filter动态参数 maven_Maven采用filter方式多环境配置实战

我们在实际开发项目的时候经常会遇到各种环境下打包,其中一般都会有至少三种开会环境,测试环境,生产环境。如果你只有一个配置文件,每次打包都要手动修改,这是最笨也是最不明智的办法。下面我来给大家介绍采用maven的filters来减少工作量,本例假设有两个环境,开会环境和生产环境。 分别有两个filter文件pom.xml文件的build下面加入以下内容:src/main/filters/filter...

weixin_39911475的博客 238

【MATLAB】工业传送带速度闭环控制与张力联合仿真

本文基于MATLAB/Simulink平台,构建了工业传送带速度闭环控制与张力联合仿真系统。通过搭建驱动模块、机械传动模块、检测模块和控制模块,实现了速度与张力的协同控制。采用双PID调节器分别整定速度与张力参数,经联合调试后系统性能良好:速度跟踪误差小于±0.03m/s,张力波动控制在±30N内,负载扰动恢复时间仅0.3秒。研究提供了从建模到参数优化的完整工程方案,可直接应用于课程设计或工业实践,有效解决了传送带运行中速度偏差与张力波动的协同控制难题。

unber的博客 78

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

IDEA配合Maven的过滤器filter配置作用之一快速切换项目环境配置文件

IDEA配合Maven的过滤器filter配置作用之一快速切换项目环境配置文件 前言 在平时的工作中,我们都会遇到这样的场景:开发、测试和上线发布三个环节的环境配置都不尽相同,那么如何快速的在三种环境中切换呢?这就要讲到我们今天的内容,maven的过滤器filter配置。 工具 maven的pom文件 代码 &lt;!--不同环境下的配置文件,一个profile代表一个环境-...

JN_H2580的博客 2093

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

filter动态参数 maven_多环境下Maven项目的管理

前言:对于一个项目,开发和生产环境之间会使用不同的配置文件,最简单的例子就是数据库连接池的配置了。当然,可以在打包上线前对配置文件进行替换,不过这也太low了吧。简单的pom.xml中的配置内容比如我们在maven项目中引入了内嵌式的tomcat插件(当然打包方式是要war包),如下代码<!--在build标签中--> <plugins> &l...

weixin_39900468的博客 119

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

maven中mysql的配置文件路径_Maven项目多环境之间的配置文件的切换

前言:对于一个项目,开发和生产环境之间会使用不同的配置文件,最简单的例子就是数据库连接池的配置了。当然,可以在打包上线前对配置文件进行替换,不过这也太low了吧。简单的pom.xml中的配置内容比如我们在maven项目中引入了内嵌式的tomcat插件(当然打包方式是要war包),如下代码org.apache.tomcat.maventomcat7-maven-plugin2.28821/指定了端口...

weixin_34900758的博客 969

MAVEN 动态打包

Maven配置分离 开发,测试,生产 环境配置 对应场景 在很多情况下,sql、redis、MongoDB等数据库分布在多台服务器上,根据使用情况分为 开发,测试,生产等,而我们需要将写好的代码进行打包,放在不同的服务器上,根据不同的情况,需要连接不同库,频繁的修改数据进行打包,比较麻烦,所以这里通过配置文件根据不同的命令进行打包,就更加方便了 实现方式: ...

weixin_41905099的博客 1032

Maven多环境配置实战 Filter

目前在开发一个wap项目,主要有开发、测试和最终部署上线几个阶段,每个阶段对配置(数据库、日志)都有不同的设置。以前都是以开发环境为主,在测试和部署上线时由部署工程师负责修改配置并上线。但是公司并非都有一个项目,我们也不是只负责一个项目,这样的工作方式导致每每上线时大家都心惊胆颤,实在忍受不了折磨,决定研究下maven下如何解决这个问题。找到方案后,不敢独享,将结果向大家介绍下。思路: 几个环境中

猛犸 3342

Maven多环境配置实战 filter

目前在开发一个wap项目,主要有开发、测试和最终部署上线几个阶段,每个阶段对配置(数据库、日志)都有不同的设置。以前都是以开发环境为主,在测试和部署上线时由部署工程师负责修改配置并上线。但是公司并非都有一个项目,我们也不是只负责一个项目,这样的工作方式导致每每上线时大家都心惊胆颤,实在忍受不了折磨,决定研究下maven下如何解决这个问题。找到方案后,不敢独享,将结果向大家介绍下。思路: ...

设计模式 289

利用mvn进行多环境配置

代码里的resource信息有很多,代码里写死某一个环境的配置的话,有以下若干问题。 1. dev,不同的beta上,使用的resource信息不同。 2. 代码没有发布到对应的环境上,需要去机器上需要手动修改。不锁住配置文件,则每次发布都需要手动修改;若锁住配置文件,则代码更新了配置文件,则机器上还是老的配置文件。把测试的环境写到代码里,容易引起配置不稳定,上线前忘了改过来可能造成问题。 ...

weixin_34123613的博客 153

初创团队快速上线:单体架构、容器化部署与运维实践

在软件工程领域,技术架构的选型往往决定产品交付的效率与稳定性。对于初创团队或个人开发者而言,理解单体应用与微服务的边界,掌握容器化部署与持续交付的基本原理,是快速验证业务模型的关键。本文从通用架构理念出发,阐述如何以一台应用服务器、一个关系数据库和一个缓存服务为基础,构建可维护、可监控、可演进的最小系统。结合Spring Boot、PostgreSQL、Redis、Docker Compose等主流技术,覆盖认证鉴权、数据迁移、日志追踪、健康检查与故障排查等实践场景。内容强调模块化单体优于过早微服务拆分,并

weixin_34357436的博客 453

Spring Boot配置安全:从环境变量到配置中心的敏感信息保护实战

在现代应用开发中,配置管理是连接代码与运行环境的关键环节,其核心在于将数据库密码、API密钥等敏感信息与业务逻辑分离。Spring Boot通过其强大的外部化配置机制,支持从环境变量、配置文件到专业配置中心的多层级方案,实现了配置与代码的解耦。这一设计不仅提升了应用的可移植性和环境适配能力,更重要的是为敏感信息的安全管理提供了基础架构。从安全工程角度看,配置信息泄露是常见的高危风险点,直接威胁数据隐私与系统安全。因此,在微服务与云原生场景下,采用外部化配置中心(如Spring Cloud Config、Ha

weixin_30338497的博客 375

Flutter跨平台应用集成TikTok登录:从环境配置到安全上线的完整指南

OAuth 2.0是现代应用实现第三方授权登录的行业标准协议,其核心原理是通过授权码模式,在用户授权后,由客户端应用使用授权码向认证服务器安全交换访问令牌。这一机制在保障用户账户安全的同时,极大地简化了注册流程,提升了用户体验。在技术实现层面,尤其是在跨平台开发框架Flutter中,集成如TikTok这类主流社交平台的登录功能,已成为出海应用获取海外用户、特别是Z世代用户的关键技术实践。该过程不仅涉及Flutter端的Dart逻辑与状态管理,更深度依赖原生平台(Android/iOS)的SDK集成、Grad

weixin_30352191的博客 307
上一篇: CentOS修改镜像源头
下一篇: Future Callable 线程池 例1
绝尘的绝
博客等级 码龄15年 15粉丝 207原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值