Maven使用profile进行项目多环境配置切换

Maven 整合 spring profile实现多环境自动切换 profile主要用在项目多环境运行的情况下,比如开发环境、测试环境、线上生产环境。 我负责的项目某个数据管理后台涉及到包含测试环境在内的12个不同的运行环境,所以每次发布都很蛋疼很纠结,配置改过来改过去,到最后有些环境都忘了怎么配的。 下面以这个项目为例介绍。 准备条件:spring3.x、Maven 2 这里是整合spring的profile和Maven的profile功能 ... 阅读详情

在项目开发时,我们本地搭建的开发dev环境,开发完成打包部署到服务器时,用到的是服务器prod环境。可以借用Maven的profiles、filters和resources,在运行或打包时指定选用的环境,实现不同环境自动使用各自环境的配置文件或配置信息。

maven profile可使用操作系统信息,jdk信息,文件是否存在,属性值等作为依据,来激活相应的profile,也可在编译阶段,通过mvn命令加参数 -P profileId 来手工激活使用对应的profile。

Maven的标准目录结构

src
  -main
      –bin 			脚本库
      –java java 	源代码文件
      –resources 	资源库,会自动复制到classes目录里
      –filters 		资源过滤文件
      –assembly 	组件的描述配置(如何打包)
      –config 		配置文件
      –webapp 		web应用的目录。WEB-INF、css、js等
  -test
      –java 		单元测试java源代码文件
      –resources 	测试需要用的资源库
      –filters 		测试资源过滤库
  -site Site		(一些文档)
target 				存放项目构建后的文件和目录,jar包、war包、编译的class文件等
LICENSE.txt
README.txt

filters 目录存放资源过滤文件,

  1. 我们可以在 main 目录下新建 filters 目录
  2. 在 filters 目录下新建各个环境配置文件夹(这一步是必要的)
  3. 在其中放入各个环境的配置文件

项目目录
在这里插入图片描述

POM配置

<project>
...

	<!-- 定义项目环境 -->
	<profiles>
        <profile>
        	<!-- profile id -->
            <id>dev</id>
            <properties>
            	<!-- 与 filters 目录下的文件夹同名,与 mvn 命令参数同名 -->
                <profile.active>dev</profile.active>
            </properties>
            <!-- 默认激活 dev 环境 -->
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <profile>
            <id>test</id>
            <properties>
                <profile.active>test</profile.active>
            </properties>
        </profile>
        <profile>
            <id>pro</id>
            <properties>
                <profile.active>pro</profile.active>
            </properties>
        </profile>
    </profiles>
    
    <build>
      <!-- 指定maven编译资源文件位置 -->
      <resources>
      	  <!-- 编译 src/main/resources 中的资源文件 -->
          <resource>
              <directory>src/main/resources</directory>
          </resource>
          <!-- 根据不同的 mvn 命令参数编译 filters 目录中指定的配置文件 -->
          <resource>
              <directory>src/main/filters/${profile.active}</directory>
          </resource>
      </resources>
      ...
      
     </build>
        
 ...
 </project>

我们可以使用命令针对不同的配置环境使用不同的配置文件进行打包:
开发环境:mvn clean package -P dev
测试环境:mvn clean package -P test
生产环境:mvn clean package -P pro

编译目录
在这里插入图片描述

Java 项目 IntelliJ IDEA 多环境配置详解 多环境配置是 Java 项目开发中的重要实践,能够帮助开发者适应不同环境的资源差异,简化部署流程,并保护敏感信息。在 IntelliJ IDEA 中,可以通过 Maven Profiles、Spring Boot Profiles 或手动加载配置文件等方式实现多环境配置。选择合适的方法,可以提高项目的灵活性、可维护性和安全性。希望本文的示例和讲解能帮助您更好地管理项目的多环境配置,提升开发效率。 阅读详情

相关推荐

Ubuntu双系统开机黑屏?3分钟搞定NVIDIA显卡驱动冲突(18.04/20.04实测有效)

本文详细解决Ubuntu双系统开机黑屏问题,特别是由NVIDIA显卡驱动冲突引起的故障。提供从临时进入系统到永久安装专有驱动的完整方案,适用于Ubuntu18.04/20.04用户,帮助快速恢复系统并优化显卡性能。

resnet7explorer的博客 309

idea本地起项目,手动自由切换dev、test环境问题

一、问题描述            idea本地起项目,总是不停使唤,即使MavenProjects里做了选择,pom文件里也做了限定有时连到dev环境、有时连到test环境。 这样会造成不同环境的服务调用的混乱。                       二、解决方法    Edit Configurations/ + Maven / dev  :clean package -D...

开着奥迪卖小猪 9726

从硬件到软件:TSMaster报文过滤全链路配置指南(含同星设备适配)

本文详细介绍了TSMaster平台下CAN/LIN/FlexRay总线的报文过滤全链路配置指南,特别针对同星TC1016等硬件的兼容性进行实战演示。从硬件层预过滤到软件层可编程过滤,提供五维过滤体系构建方法,帮助工程师提升车载诊断与总线分析效率。重点解析混合总线过滤策略优化及诊断场景下的特殊过滤方案。

tensorflowjs6的博客 401

springboot中多个配置文件不生效问题

多个配置文件不生效问题 新搭建了一个springboot框架,有一些地方疏忽,导致配置文件切换不生效,一直是默认的dev,查了下百度,最后总结了一下,告诫自己。 问题描述 我这里有多个配置文件,并且在application-yml中配置了切换,但是一直都不好用,解决方法如下: 首先,文件名要像我写的这样用“-”连接; 在pom 文件中配置 <profiles> <profile> <id>dev</id> </profile> <pro

ilingmo的博客 495

VS2019手动添加bits/stdc++.h全指南(附解决‘无法打开源文件‘错误)

本文详细介绍了在Visual Studio 2019中手动配置C++万能头文件bits/stdc++.h的完整方法,解决常见的'无法打开源文件'错误。通过分析GCC与MSVC编译器生态差异,提供了纯手动创建和MinGW移植两种可靠方案,并给出详细的步骤、常见错误排查及最佳实践建议,帮助开发者高效配置竞赛开发环境。

weixin_29011395的博客 545

OsgEarth —— 笔记6 - 开发阶段加入漫游飞行(附源码)

效果      视频地址   源码 源码下载请私信   代码      代码相关内容:           OSG —— 笔记1 - 指令调用模型           OsgEarth —— 笔记1 - 创建地球的earth文件           OsgEarth —— 笔记2 - Qt窗口加载earth地球(附源码)           OsgEarth —— 笔记3 - 为地

1896

Spring boot项目maven的profile多环境配置不自动替换变量的问题解决

原文地址:http://www.07net01.com/2017/04/1842360.html 在网上找了好久,配置都很简单,可是我的程序就是不能自动替换变量,最终单独测试,发现原来是引用spring boot parent的问题 引用一位博主的话"spring-boot为了保护application.yml和application.properties,修改了默认的占位符${...

杨春建的博客 1万+

基于Python实现学习进度跟踪系统

{{ task }}: {{ "%.1f"|format(hours) }}小时

寒寒豆豆软件公司的博客 195

springboot+maven开发环境配置,本地运行时使用dev环境,打包时使用prod环境

学习过springboot的都应该知道 springboot可以根据不同的开发环境(本地环境、生产环境)来加载不同的配置文件的 因为本地测试的数据库和部署在服务器上的数据库不一样,所以我把本地测试的数据库配置和服务器的数据库配置分别写在application-dev.yml和application-prop.yml 这样子做之后,以后把项目打包到服务器之前,就不需要再修改数据库的配置,只需在application.yml文件中要修改spring.profile.active配置即可 下面是我在网上找到的一

GHY 7045

Istio ICA考试之路---3-2

部署2个测试容器,分别是test和test2.test注入标签subset=v1。这里文档中省略了metadata的3行,可以从前面任意一个yaml复制粘贴过来。通过test2测试容器访问,50%概率触发500故障注入。通过test测试容器访问,20%概率触发延迟注入。发起20次请求,一共10次被500。

Q先生 725

《Python星球日记》 第43天:机器学习概述与Scikit-learn入门

《Python星球日记》 第43天:机器学习概述与Scikit-learn入门

Code_流苏:在代码中寻诗意,在实践中觅真知 932

maven profiles配置_spring boot、spring cloud 中profiles 切换不生效的问题

对于实际开发spring boot、spring cloud 的同学来说,开发环境一般都有好几套,比如local、dev、test、pre、prd等。在本地测试的时候一般使用local,当然环境的配置文件有多种方式。第一种配置方式可以是直接在resources 下面创建 application-local(|dev|test).yml(|properties) 等(这样的配置,一般是在启...

weixin_39791322的博客 1169

基于FPGA的多通道音频信号采样系统设计

FPGA是随着数字集成电路的发展而逐步演变而来的。从早期的电子管、晶体管、小规模集成电路,到超大规模集成电路(VLSIC),数字集成电路的集成度和性能不断提升。FPGA的出现为系统设计师提供了灵活的设计平台,使其能够在不依赖半导体厂商的情况下快速设计专用集成电路(ASIC)。FPGA具有设计周期短、成本低、开发工具先进等优点,广泛应用于原型设计和产品生产中。VHDL是一种用于描述数字系统的硬件描述语言,其语言形式类似于计算机高级语言,但包含了许多硬件特征语句。

qq_62634009的博客 709

maven profile实现多环境打包

快速解决:项目目录 1.pom文件中添加profile&lt;profiles&gt; &lt;profile&gt; &lt;!-- 本地开发环境 --&gt; &lt;id&gt;dev&lt;/id&gt; &lt;properties&gt; &lt;profiles.active&gt;dev&lt;/prof

weixin_34295316的博客 122

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【Java】Maven Profile管理Spring cloud多环境配置

一、前言 一般环境分为三种:开发环境、测试环境、部署环境。 举个简单的例子,当完成开发,向服务器部署时,就要更改项目配置文件里的内容。这对于小的单体项目来说尚可接受,但对于微服务这样的项目可是麻烦死了。 有没有一种可以一键切换开发环境的按钮 二、Spring Boot Profile Spring Boot已经提供了配置管理的功能,如下: spring: profiles: active:...

HaYa 1164

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

【问题集】IDEA Maven多环境下Profile失效问题

【问题集】IDEA Maven多环境下Profile失效问题 背景 Maven项目采用多profile模式,默认dev,通过IDEA切换到其他环境,仍然是dev环境。 多环境配置 <profiles> <profile> <id>develop</id> <propert...

让我们每天一起进步 7644

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Mvn-profile进行各个环境的切换

为什么要使用mvn-profile? 在公司中可能会存在各种环境比如:开发环境、测试环境、生成环境等等,就可以使用mvn-profile进行项目的管理,只需要先配置各个环境需要的配置的信息,在打包部署的时候,只需要点击所选的环境进行切换就好,而不是每次进行修改想打包到那个环境的信息再进行打包。 配置pom 2.1使用profiles 配置文件路径赋值给env元素: <profiles&...

Ghost_B2的博客 406

基于 Maven Profile 实现项目多环境切换

文章目录需求实现步骤配置 profile 节点添加与 profile 配置相对应的配置文件目录配置 resource 节点打包发布 需求 项目分为内外网项目,架构为 Maven + ssm,因为开发、测试、发布流程不规范并且维护成本巨大,需要进行整体规范改造,而分给我做的是实现项目多环境配置。在没有进行改造之前,切换环境是在配置文件中开启或者关闭相对应环境的注释,而因为环境大体上又分一级部署、二级部署、自主部署等,导致相关人员还要去记如何区别环境才能进行开发、打包,所以需要进行改造。下图为模拟当时的环境(需

11cchh的博客 546

Maven环境下激活自定义YML环境

本文介绍了在Maven项目中配置多环境YAML文件的方法。首先通过复制已有配置文件(如dev)创建新的环境配置文件(如out),需遵循application-xxx.yml命名规范。然后在pom.xml中添加对应的Maven profile配置,主要包括设置环境ID和spring.profiles.active属性。文章提供了JeecgBoot的复杂配置示例和简化版本,强调只需配置id和properties两个关键字段即可实现环境切换。最后建议刷新Maven使配置生效。该方法可实现环境隔离,使配置管理更清晰

qq_45126998的博客 252

maven2中profile的介绍与使用

<project> <modelVersion>4.0.0</modelVersion> <groupId>cc.mzone</groupId> <artifactId>myjar</ar...

chuteng3602的博客 388

springboot 多环境配置

1.案例简单介绍 1.1项目结构 1.2 yml中的内容(不包括application.yml) 2.不借助maven的profile 2.1 application.yml中的内容-----&amp;gt;这里指定dev为默认环境配置 spring: profiles: active: dev 2.2 打包-----&amp;gt;在项目根目录下运行如下命令 mvn clean pa...

nrsc 1109

Spring Boot —— Maven Profile多配置

文章目录Spring Boot —— Maven Profile多配置前言实现步骤截图项目地址 Spring Boot —— Maven Profile多配置 前言 通过maven管理多环境,达到快速切换和部署效果。可以在Jenkins环境使用maven命令执行不同客户端,在单点Spring Boot 项目中通过Maven发布很有用!但在Cloud环境下为达到快速发布,我们使用Consul或者Do...

Genius only means hard-working all one's life. 908

idea maven打包_SpringBoot与Maven多环境整合

导读文章转载自【码猿技术专栏】在中大型企业做过开发都知道,开发任何的项目至少都需要三个环境,分别是开发环境,测试环境,生产环境。环境不同意味着配置也是不相同的,比如数据库,文件路径等等配置,那么如何解决这么多环境整合在一起既不混乱又能很优雅呢?今天就来讲讲SpringBoot如何实现多环境整合的。SpringBoot对多环境整合有着自己的实现,但是在使用Maven的项目中我并不推荐直接使用Spri...

weixin_39706127的博客 554

maven相关

1.maven nexus私服搭建 使用nexus 3 :下载地址 :https://www.sonatype.com/nexus-repository-oss

我的博客 397

Profile多环境配置以及结合Maven如何使用

我们在开发项目的过程中,会遇到需要使用多套环境配置的情况,因为不同环境可能存在不同的配置,比如数据库连接等等,这时候就可以用 profile 来解决。

dongdong199033的博客 584
上一篇: 【Java】getClass().getClassLoader().getResourceAsStream() 与 getClass().getResourceAsStream()的区别
下一篇: Maven常见配置及本地仓库清理(Linux)
xcosy
博客等级 码龄7年 29粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值