1. 两个地方需要配置
首先是要定义配置源,dev/test/prod对应的配置源需要指定;这是灵活的,可变的;
其次要定义配置文件,该配置文件里面的内容采用占位符的方式来编制,在编译打包的过程中要动态根据配置源来进行填充。

2. 定义配置分类
对于第一个地方,配置分类,是要在maven的pom文件中的<profiles>中定义<profile>节点中进行定义,指定各种配额场景的配置源路径,以及配置项,这里注意,配置项(properties节点)只是应用于POM文件(占位符的替换),配置源路径指定的文件则是用于配置指定的配置文件(下面要讲到的),下面的配置定义了两类配置分类,分别是dev和test

     <profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<filters.env>dev</filters.env>
<mvn.upload.serverId>deploy_server_65</mvn.upload.serverId>
<mvn.upload.url>scp://root@10.1.108.68:/var/lib/hbase</mvn.upload.url>
<mvn.upload.command>rm -rf /var/lib/hbase/bigdata-stat-3.2.2.jar</mvn.upload.command>
<mvn.upload.phase>package</mvn.upload.phase>
</properties>
</profile>
<profile>
<id>test</id>
<properties>
<filters.env>test</filters.env>
<mvn.upload.serverId>deploy_server_104</mvn.upload.serverId>
<mvn.upload.url>scp://iotwh@192.168.156.104:/home/iotwh</mvn.upload.url>
<mvn.upload.command>rm -rf /home/iotwh/bigdata-stat-3.2.2.jar</mvn.upload.command>
<mvn.upload.phase>install</mvn.upload.phase>
</properties>
</profile>

  这里的<id>和<filter.env>是关键,未来通过命令行进行启动的"-Ptest"中的"test"就是id;properties里面的定义的内容都是在对应POM文件内部占位符;比如filters.env就是用于指定路径的一部分:

    <build>
<resources>
<resource>
<directory>${project.basedir}/src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<filters>
<filter>${project.basedir}/filters/${filters.env}/conf.properties</filter>
</filters>
... ....
</build>

  这段配置指定了要处理占位符的文件,这里是指src/main/resources下面的所有的配置文件;占位符替换的内容在filter中有定义,${filters.env}这里分别是dev以及test,即如果在命令行中指定-Pdev,则采用dev/conf.properites里面的文件进行替换src/main/resources下面文件的占位符,如果是-Ptest,同样处理。
定义配置文件以及配置源
  这段代码指定了第二部分内容,指定配置源文件:

         <filters>
<filter>${project.basedir}/filters/${filters.env}/conf.properties</filter>
</filters>

  以下部分指定了资源文件路径,该目录下的配置文件内部的占位符都将会被填充:

             <resource>
<directory>${project.basedir}/src/main/resources</directory>
<filtering>true</filtering>
</resource>

  filter节点里面指定的就是配置文件,resource文件夹中的占位符都是通过指定的配置文件内容进行填充。比如resources文件夹下面的app.config

data.path=${data.path}
output.path=${output.path}
pboss.files=${pboss.files}
back.path=${back.path}

maven的配置文件取不同版本的更多相关文章

  1. Maven中配置默认JDK版本

    使用Maven构建项目时,默认是使用jdk1.3版本,目前很多使用泛型的项目肯定是无法通过编译,除了修改项目的pom文件外,还可以在Maven的配置文件settings.xml中添加如下配置来解决: ...

  2. Maven的配置文件pom.xml

    Maven的配置文件pom.xml 简介: 什么是POM? POM是项目对象模型(Project Object Model)的简称,它是Maven项目中的文件,使用XML表示,名称叫做pom.xml. ...

  3. 【工具学习】——教你读懂Maven的配置文件

    [前言] 最近在项目中用到了maven工具,相信很多第一次接触maven的人都有这样的困惑,maven的文件很简单,就像下图中的结构一样,但是它的功能十分强大,那是怎么做到的呢?配置文件!配置文件里是 ...

  4. Maven全局配置文件settings.xml详解(转)

    Maven全局配置文件settings.xml详解   目录 一.概要 1.settings.xml的作用2.settings.xml文件位置3.配置的优先级 二.settings.xml元素详解 1 ...

  5. maven 检查依赖冲突和版本冲突

    maven 检查依赖冲突和版本冲突   在项目发布的时候,一般都需要进行依赖冲突检查或者重复类的检查,这个时候我一般会使用下面的两个命令:   1 2 3 mvn -U clean package - ...

  6. Unsupported major.minor version 51.0 在配置/运行Maven工程时,JDK与Maven所引用的jdk版本不一致

    在配置Maven工程,部署到tomcat服务器运行的过程中,遇到如下错误: "Unsupported major.minor version 51.0 " 错误原因是由于maven ...

  7. maven 修改默认的JDK版本

    maven jdk 版本配置 maven 默认使用的 jdk 版本 新建一个 maven 项目,如下 : 项目左下方出现一个感叹号,JRE 显示的是 1.5 版本.解决方式有两种,一种是配置 pom. ...

  8. maven settings 配置文件

    maven settings 配置文件 <?xml version="1.0" encoding="UTF-8"?> <settings xm ...

  9. 如何在Maven官网下载历史版本

    如何在Maven官网下载历史版本 历史版本一般会隔一段时间,便找不到,官网会及时显示的是最新版本.不多说,直接进入. https://archive.apache.org/dist/maven/bin ...

随机推荐

  1. Office Web Apps Server 2013与PDF(二)

    在上一篇文章(Office Web Apps Server 2013与PDF(一))中,曾经介绍了Office Web Apps Server 2013在更新后,可以直接对PDF文档进行在线的查看.不 ...

  2. Web框架的引入

    为什么会有web框架 有了上一篇内容,静态.动态web服务器的实现,已经掌握了客户端请求到服务器处理的机制.在动态资源处理中,根据请求 .py 导入模块应用,然后调用应用入口程序实现动态处理.但是在真 ...

  3. windowsphone8.1学习笔记之应用数据(四)

    应用数据的存储格式常用的分为json和xml两种(其实我都想略过这个地方的,json我一直用的是json.net,而wp上操作xml的方式与其他相比也没太多变化). 先说说json数据存储,关于jso ...

  4. ArcGIS API for JavaScript Bookmarks(书签)

    说明:本篇博文介绍的是ArcGIS API for JavaScript中的 Bookmarks(书签) ,书签的作用是,把地图放大到一个地方 添加书签,书签名称可以和地图名称一直,单击标签 地图会定 ...

  5. Mac标识物理位置算法 import Levenshtein mac列表特征值

    mac 字符串 与 基准字符串的 Levenshtein   距离,考虑  mac信号强度的时序性,60秒内若干次变化 不引入强度 mac字符串的唯一性 如何排序 基准字符串的选取 同一尺度 都按强度 ...

  6. json.dumps(i['bd_res'], ensure_ascii=False)

    json.dumps(i['bd_res'], ensure_ascii=False) import xlrd import time import sys import os import requ ...

  7. php扩展trie_filter: 利用词库, 过滤敏感词

    1. 先安装libiconv# wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz# tar -zxvf libiconv- ...

  8. "ORA-01012: not logged on"以及"Connected to an idle instance."解决思路

    今天测试用的ORACLE服务器出现卡顿情况,于是准备重启一下,在运行shutdown指令关闭数据库的时候意外断开连接,后面想再次进入ORACLE服务器启动时便遇见如下报错: 使用sqlplus /no ...

  9. 我的Android进阶之旅------>如何为ListView组件加上快速滑块以及修改快速滑块图像

    使用布局文件需要将android:fastScrollEnabled="true" ,如下代码所示: <ListView android:id="@+id/list ...

  10. CVPR 2018:diractNets网络,有残差网络好吗?

    我把我明天讲PPT的材料弄上来了........哈 哈哈