热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Mavenprofile实现不同环境的配置管理实践

这篇文章主要介绍了Mavenprofile实现不同环境的配置管理实践,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

前言

目前,企业项目的开发过程中,往往会使用配置文件来做一些配置项来实现项目部署的灵活性,避免硬编码的方式在环境变化时需要对代码进行重新编译。但是往往在项目周期中存在着各种环境:如开发环境、测试环境以及生产环境等,而且在不同的运行环境中可能牵扯到大量的配置项变化。如果在不同的部署环境中切换,对配置文件的管理往往容易让程序员感觉非常的混乱。
为了避免这种换乱,研发过程中也有比较多的手段进行。比如,有公司就采用VPN的虚拟网络环境,让测试环境、生产环境的网络一致,让程序员在不同环境中对版本进行发布时只需要对VPN进行切换即可。以免发生网络配置项改错,漏改等现象的发生。这样个人觉得还不错,唯一有一点句是调整网络环境、设备环境的成本应该也比较高。
当然profile的方式应该算是比较经济的。我知道的比如spring-boot、maven都可以支持到profile的方式来对不同环境进行指定。本文希望介绍一下,我理解的使用maven的profile方式来进行不同环境切换。讲得不到位的地方希望看官嘴下留情,也多指定。

Maven 的 profile:

在maven的 pom.xml 文件中有一个配置项叫着profiles节点,如下:

 
  
   test
   
    test
    127.0.0.1
   
   
    false
   
  
  
   develop
   
    develop
    192.168.1.102
   
   
    true
   
  
  
   product
   
    product
    10.21.41.100
   
   
    false
   
  
 

其中profiles节点下可以填写多个profile 其中profile主要包含了三个属性idpropertiesactivation

id 应该是为了区分profile用的。
properties 就是对应的属性。
activation 应该是主要用来指定是否被默认激活的,它还有一个子节点activeByDefault, 如果子节点activeByDefault内的值为true表示他会被激活。它还有一些子节点,但是不知道什么用。后续看看在学习下。

实践前期准备

我准备建立一个简单的maven功能来实践一下maven的profile实现不同的配置管理,所以首先需要建议一个maven工程。本文采用的是idea进行试验的。一下是我建立工程的结构图。

在这里插入图片描述

由于我只是需要对配置文件进行管理,所以是完全不需要建立任何java类就可以的。

  • 首先建立了三个profile相关的配置文件 develop.propertiesproduct.propertiestest.properties
  • 在三个文件中我就只写了一个属性app.name,三个文件中分别为 develop.maven.profileproduct.maven.profiletest.maven.profile.
  • 为了验证在各类配置文件中都是可行的, 我建立了两个供测试的配置文件application.propertiesapplication.xml.

application.properties 的内容为:

在这里插入图片描述

application.xml的内容为:

在这里插入图片描述

实践一:

实践一主要采用profile + filter的方式实现内容的注入。
该方式的思想是通过 filter下的文件编写可变动的配置项,由filters标签引入不同的配置文件项,然后提取不同的配置文件中的配置项填充到resources下的配置文件中。
所以其中的关键标签包含了 profile filter resource

Maven的配置文件pom.xml的内容如下

<&#63;xml version="1.0" encoding="UTF-8"&#63;>

 
  maven-test
  com.maomao.maven
  1.0-SNAPSHOT
 
 4.0.0
 maven-profile
 1.0-SNAPSHOT
 
  
   test
   
    test
   
   
    false
   
  
  
   develop
   
    develop
   
   
    true
   
  
  
   product
   
    product
   
   
    false
   
  
 
 
  
   src/filters/${active.profile}.properties
  
  
   
   
    true
    src/main/resources
    
     **/*.properties
     **/*.xml
    
   
  
 

执行maven命令进行打包:

mvn clean install 

执行后打包结果targets文件夹下的配置文件application.propertiesapplication.xml的占位置被填充。

在这里插入图片描述
在这里插入图片描述

当然如果切换profiles下的激活项,填充的内容自然也会发生变化。或者采用maven命令进行激活项的切换:

mvn clean package -Ptest # 指定激活项的ID

实践二:

实践二主要采用profile 直接将属性配置到了profile下的properties节点下。此方法就不在需要多余的filter properties文件配置了。
例如:

 
   product
   
    product
    10.21.41.100
   
   
    false
   
  

这里properites中多了一个jdbc.url属性。那我们的application.properties文件中同样适用两个占位符

app.name=${app.name}
jdbc.url=${jdbc.url}

同样执行maven命令进行打包:

mvn clean install -Pproduct

打包之后的 application.properties内容对应变为

在这里插入图片描述

结束语

整个内容写的有点乱,但是意思大概就是这个意思。主要想说maven可以搞这样一个事情。也给自己留个备忘录。如果有人来看到这个希望轻喷,我很少写东西。最近准备练习写东西,待改进的地方还是很多的,所以见谅了。

到此这篇关于Maven profile实现不同环境的配置管理实践的文章就介绍到这了,更多相关Maven profile配置管理内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!


推荐阅读
  • Spring框架入门指南:专为新手打造的详细学习笔记
    Spring框架是Java Web开发中广泛应用的轻量级应用框架,以其卓越的功能和出色的性能赢得了广大开发者的青睐。本文为初学者提供了详尽的学习指南,涵盖基础概念、核心组件及实际应用案例,帮助新手快速掌握Spring框架的核心技术与实践技巧。 ... [详细]
  • 深入解析Tomcat:开发者的实用指南
    深入解析Tomcat:开发者的实用指南 ... [详细]
  • Spring Boot 实战(一):基础的CRUD操作详解
    在《Spring Boot 实战(一)》中,详细介绍了基础的CRUD操作,涵盖创建、读取、更新和删除等核心功能,适合初学者快速掌握Spring Boot框架的应用开发技巧。 ... [详细]
  • SQLmap自动化注入工具命令详解(第28-29天 实战演练)
    SQL注入工具如SQLMap等在网络安全测试中广泛应用。SQLMap是一款开源的自动化SQL注入工具,支持12种不同的数据库,具体支持的数据库类型可在其插件目录中查看。作为当前最强大的注入工具之一,SQLMap在实际应用中具有极高的效率和准确性。 ... [详细]
  • 如何利用Apache与Nginx高效实现动静态内容分离
    如何利用Apache与Nginx高效实现动静态内容分离 ... [详细]
  • 深入解析Wget CVE-2016-4971漏洞的利用方法与安全防范措施
    ### 摘要Wget 是一个广泛使用的命令行工具,用于从 Web 服务器下载文件。CVE-2016-4971 漏洞涉及 Wget 在处理特定 HTTP 响应头时的缺陷,可能导致远程代码执行。本文详细分析了该漏洞的成因、利用方法以及相应的安全防范措施,包括更新 Wget 版本、配置防火墙规则和使用安全的 HTTP 头。通过这些措施,可以有效防止潜在的安全威胁。 ... [详细]
  • 在使用 Android Studio 进行开发时,经常会遇到 XML 文件中的视图元素无法正确格式化的问题,特别是在手动添加或修改 `` 元素时。本文将详细介绍如何解决这一常见问题,并提供一些实用的技巧,帮助开发者高效地管理和优化 XML 布局文件。建议将本文收藏以备后续参考。 ... [详细]
  • Spring注解开发指南:@Resource与@Component详解 ... [详细]
  • 本课程详细解析了Spring AOP的核心概念及其增强机制,涵盖前置增强、后置增强和环绕增强等类型。通过具体示例,深入探讨了如何在实际开发中有效运用这些增强技术,以提升代码的模块化和可维护性。此外,还介绍了Spring AOP在异常处理和性能监控等场景中的应用,帮助开发者更好地理解和掌握这一强大工具。 ... [详细]
  • SpringBoot启动脚本详解:BAT文件应用与基础入门指南(SpringBoot系列第1篇)
    如果你还在为SSM框架的复杂搭建过程和繁琐的配置文件而烦恼,那么SpringBoot将是你的一大福音。作为SpringBoot系列的第一篇文章,本文详细介绍了如何使用BAT文件来启动SpringBoot应用,并提供了基础入门指南,帮助开发者快速上手,简化开发流程。 ... [详细]
  • 随着越来越多的应用程序采用JSON格式作为响应数据,基于Spring Framework构建的服务端应用也广泛采用了这一实践。本文将详细介绍如何在Spring 4.x版本的MVC框架中配置和实现HTTP请求返回JSON数据流,涵盖相关配置、依赖管理和代码示例,帮助开发者高效地实现这一功能。 ... [详细]
  • Android平台生活辅助应用的设计与开发实现
    随着移动互联网技术的迅猛发展,Android操作系统已成为移动设备中的主流平台。本文探讨了基于Android平台的生活辅助应用设计与开发,旨在通过创新的功能和用户友好的界面,提升用户的日常生活质量。研究不仅涵盖了应用的核心功能实现,还深入分析了用户体验优化的方法,为同类应用的开发提供了有价值的参考。 ... [详细]
  • 在 Tomcat 上部署 Jenkins 实现持续集成环境搭建
    本文介绍了如何在Tomcat服务器上部署Jenkins以构建持续集成环境。首先,需下载并解压Tomcat压缩包,例如 `apache-tomcat-8.5.37.tar.gz`。接着,为Tomcat创建一个管理用户,并对相关文件目录进行权限配置,确保Jenkins能够顺利运行于Tomcat之上。此外,还详细阐述了环境配置、服务启动及基本的故障排查技巧,为用户提供了一套完整的部署指南。 ... [详细]
  • 在Maven项目中高效集成JaCoCo代码覆盖率插件,以显著提高测试质量。首先,需在项目的`pom.xml`文件中添加JaCoCo和JUnit的依赖配置,确保测试框架和覆盖率工具的无缝结合。通过这种方式,开发者不仅能够执行单元测试,还能获取详细的代码覆盖率报告,从而优化测试策略和代码质量。 ... [详细]
  • 手机上编写和运行PHP代码的最佳软件推荐 ... [详细]
author-avatar
L的日记727248401
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有