最近接触的项目都是在很多地方都落地的项目,需要支持不同的环境使用不同的配置文件。一直以来都以为是人工的去写不同的配置文件,手动的去修改运用的配置文件。感觉自己还是太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. 爬虫入门——01

    1. 引言     从今天开始系统的学习网络爬虫.写这篇博客的目的在于,一来记录下自己的学习过程:二来希望可以给像我一样不懂爬虫但又对爬虫十分感兴趣的人带来一些帮助.     昨天去图书馆找有关爬虫书 ...

  2. c 算牌器代码

    int main() { // 算牌器 ]; ; do { printf("请输入牌名: \n"); scanf("%2s",char_name); ; ]) ...

  3. linux内核调试技术之修改内核定时器来定位系统僵死问题

    1.简介 在内核调试中,会经常出现内核僵死的问题,也就是发生死循环,内核不能产生调度.导致内核失去响应.这种情况下我们可以采用修改系统内核中的系统时钟的中断来定位发生僵死的进程和函数名称.因为内核系统 ...

  4. C#泛型方法解析

    C#2.0引入了泛型这个特性,由于泛型的引入,在一定程度上极大的增强了C#的生命力,可以完成C#1.0时需要编写复杂代码才可以完成的一些功能.但是作为开发者,对于泛型可谓是又爱又恨,爱的是其强大的功能 ...

  5. js获取屏幕宽高

    最近想自己实现一个全屏滚动. 结果一开始就遇到了问题.因为不知道如何获取一个页面屏幕的高度. 网上所有的博客都是复制粘贴. 网页可见区域宽:document.body.clientWidth 网页可见 ...

  6. Web安全相关(二):跨站请求伪造(CSRF/XSRF)

    简介 CSRF(Cross-site request forgery跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对 ...

  7. SparkStreaming实现Exactly-Once语义

    作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 译自:http://blog.cloudera.com/blog/2015/03/exactly ...

  8. 欢迎阅读daxnet的新博客:一个基于Microsoft Azure、ASP.NET Core和Docker的博客系统

    2008年11月,我在博客园开通了个人帐号,并在博客园发表了自己的第一篇博客.当然,我写博客也不是从2008年才开始的,在更早时候,也在CSDN和系统分析员协会(之后名为"希赛网" ...

  9. 【中文分词】隐马尔可夫模型HMM

    Nianwen Xue在<Chinese Word Segmentation as Character Tagging>中将中文分词视作为序列标注问题(sequence labeling ...

  10. 浅玩JavaScript的数据类型判断

    前言 平常在需要进行类型判断时,随手拿起typeof就像手枪一样只管突突突...也没有仔细的去了解它的具体特性. 所以这里就利用空闲时间,来做一个较为详细的了解. 首先我们来全面看一遍typeof类型 ...