最近接触的项目都是在很多地方都落地的项目,需要支持不同的环境使用不同的配置文件。一直以来都以为是人工的去写不同的配置文件,手动的去修改运用的配置文件。感觉自己还是太low呀。maven的使用的还停留在基础上。后面看项目才发现maven可以不同环境不同的发布,只需要制定环境参数或者设置就可以,整个工程简单粗暴。觉的非常不错,于是想深入的了解一下。写下此文.

一、maven profile介绍

  profile可以让我们定义一系列的配置信息,然后指定其在相应的环境下使用相应的配置文件。这样我们就可以根据环境的不同切换不同的配置文件,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果。for example,我们的项目落地不同的地域,每个地域都有每个地域特色的功能,需要我们配置不同一些参数。更加实际的情况是我们的生产环境与测试环境使用不同的数据库,账号密码、连接地址可能不一样,如果每次你都切换环境都需要自己手动去修改这些东西,一次两次你可能觉的还好,每次测试、上线都需要修改的时候我保证你会疯的。相信我!哈哈,这个时候就是profile的作用,可以一次性解决你的问题。特别结合持续集成工具的时候,profile可以很方便的上线发布。

二、如何配置profile

  profile有三种配置方式:

    单个项目配置:第一种是直接在pom.xml中配置

    用户配置:可以在用户的setting.xml中配置。该文件在用户家目录下的“.m2”目录下。

    全局配置:可以在maven的conf的setting.xml中配置。

  在pom.xml中配置的用法(个人推荐)

<profiles>
<!--本机环境(127.0.0.1) -->
<profile>
<id>local</id>//指定profile id
<properties>
<dir>conf</dir>//配置文件所在位置
<env>ecosp_develop_local</env>//文件名
<suffix>local</suffix>
</properties>
    <activation>
      <activeByDefault>true</activeByDefault>//默认使用的配置文件
    </activation>
</profile>
<!--测试环境(172。0.0.1) -->
<profile>
<id>test</id>
<properties>
<dir>conf</dir>
<env>ecosp_develop_test</env>
<suffix>test</suffix>
</properties>
</profile>
<profiles>

  setting.xml中配置profile

  当profile定义在settings.xml中时意味着该profile是全局的,它会对所有项目或者某一用户的所有项目都产生作用。因为它是全局的,所以在settings.xml中只能定义一些相对而言范围宽泛一点的配置信息,比如远程仓库等。而一些比较细致一点的需要根据项目的不同来定义的就需要定义在项目的pom.xml中。具体而言,能够定义在settings.xml中的信息有<repositories>、<pluginRepositories>和<properties>。定义在<properties>里面的键值对可以在pom.xml中使用。

三、如何使用profile

  1、如何制定使用那个profile

    pom.xml中的activation标签可以设置默认使用的profile.

    setting.xml的activeProfiles标签可以设置使用的profile。

    mvn package –P test命令,-P指定了使用那个profile。

四、总结

  1、使项目适配不同的环境非常方便,提高开发效率。

  2、依赖于maven。

项目实现不同环境不同配置文件-maven profile的更多相关文章

  1. Linux环境变量配置文件/etc/profile、/etc/bashrc、~/.bashrc的区别以及一些隐藏文件的作用

    ①/etc/profile: 该文件登录操作系统时,为每个用户设置环境信息,当用户第一次登录时,该文件被执行.也就是说这个文件对每个shell都有效,用于获取系统的环境信息. ②/etc/bashrc ...

  2. Maven profile 打包分环境加载不同的资源文件

    在实际开发项目中,常常有几种环境,一般情况下最少有三种环境:开发.测试.正式. 各个环境之间的参数各不相同,比如mysql.等不同环境的host不一样,若每个环境都手动替换环境很容易出错,这里我们利用 ...

  3. shell编程之环境变量配置文件(4)

    1 source命令 修改了配置文件,并让它立刻生效,而不用重新登录 source 配置文件 或者 .配置文件 2 环境变量配置文件简介 PATH HISTSIZE PS1 HOSTNAME等环境变量 ...

  4. Linux centosVMware shell 管道符和作业控制、shell变量、环境变量配置文件

    一.管道符和作业控制 管道符|,用于将前一个指令的输出作为后一个指令的输入 #cat /etc/passwd|wc -l  作业控制:当运行程序时,可以使它暂停(Ctrl+Z组合键),然后使用fg(f ...

  5. Shell系列(16)- 环境变量配置文件简介及source命令

    变量类型 用户自定义变量(本地变量) 环境变量 预定义变量 位置参数变量 source命令 [root@localhost ~]# source 配置文件 或 [root@localhost ~]# ...

  6. maven profile动态选择配置文件

    一.背景 在开发过程中,我们的软件会面对不同的运行环境,比如开发环境.测试环境.生产环境,而我们的软件在不同的环境中,有的配置可能会不一样,比如数据源配置.日志文件配置.以及一些软件运行过程中的基本配 ...

  7. maven profile实现多环境打包

    快速解决: 项目目录 1.pom文件中添加profile <profiles> <profile> <!-- 本地开发环境 --> <id>dev< ...

  8. 通过maven profile 打包指定环境配置

    背景 最近换了个新公司接手了一个老项目,然后比较坑的是这个公司的项目都没有没有做多环境打包配置,每次发布一个环境都要手动的去修改配置文件.今天正好有空就来配置下. 解决这个问题的方式有很多,我这里挑选 ...

  9. maven profile实现多环境配置

    每次项目部署上线都需要手动去修改配置文件(比如数据库配置,或者一个自定义的配置)然后才能打包,很麻烦,网上找到 maven profile可以完成这个工作,记录如下: 环境:eclipse + spr ...

随机推荐

  1. GroupData群数据库的还原与优化

    一.背景 这个数据库的数据文件mdf大概有83G左右,当还原数据库之后感觉可以做很多性能方面上的调优,合并数据后mdf数据文件大概有59G左右,行压缩后mdf数据文件大概有39G左右,页压缩后mdf数 ...

  2. 带搜索的ComboBox

    带搜索的ComboBox就是给ComboBox一个依赖属性的ItemSource,然后通过数据源中是否包含要查询的值,重新给ComboBox绑定数据源. public class EditComboB ...

  3. Java Map hashCode深究

    [Java心得总结七]Java容器下——Map 在自己总结的这篇文章中有提到hashCode,但是没有细究,今天细究整理一下hashCode相关问题 1.hashCode与equals 首先我们都知道 ...

  4. ASP.NET Core 中文文档 第二章 指南(2)用 Visual Studio 和 ASP.NET Core MVC 创建首个 Web API

    原文:Building Your First Web API with ASP.NET Core MVC and Visual Studio 作者:Mike Wasson 和 Rick Anderso ...

  5. new/delete重载

    在c++中,有时我们需要在运行阶段为一个变量分配未命名的内存,并使用指针来访问它,这里就可以用到new关键字.另外需要指出的是,new分配的内存块通常与常规变量分配的内存块不同,常规变量的值都储存在被 ...

  6. sql 分组取最新的数据sqlserver巧用row_number和partition by分组取top数据

    SQL Server 2005后之后,引入了row_number()函数,row_number()函数的分组排序功能使这种操作变得非常简单 分组取TOP数据是T-SQL中的常用查询, 如学生信息管理系 ...

  7. jquery在线扫雷

    <扫雷>是一款大众类的益智小游戏,于1992年发行.游戏目标是在最短的时间内根据点击格子出现的数字找出所有非雷格子,同时避免踩雷. 在线试玩 http://hovertree.com/te ...

  8. Mysql性能优化一

    下一篇:Mysql性能优化二 mysql的性能优化无法一蹴而就,必须一步一步慢慢来,从各个方面进行优化,最终性能就会有大的提升. Mysql数据库的优化技术 对mysql优化是一个综合性的技术,主要包 ...

  9. [连载]《C#通讯(串口和网络)框架的设计与实现》- 12.二次开发及应用

    目       录 第十二章     二次开发及应用... 2 12.1        项目配制... 3 12.2        引用相关组件... 4 12.3        构建主程序... 5 ...

  10. ArrayList LinkedList源码解析

    在java中,集合这一数据结构应用广泛,应用最多的莫过于List接口下面的ArrayList和LinkedList; 我们先说List, public interface List<E> ...