• [其他] 集群监控容量显示不正确
    问题现象:集群监控容量显示不正确问题版本:  HCS803  dws811分析过程:集群监控容量显示不正确,console页面没有其他报错,dws.log文件中也没有报错信息查看xml文件,发现当前集群的版本下磁盘规格和实际不符合按照HCS802案例:https://bbs.huaweicloud.com/forum/thread-93174-1-1.html修改后无作用在HCS803的环境上,修改容器中xml文件后,数据库中表datastoreconfig中的信息并没有修改,无法单独修改datastoreconfig表中信息。需要将xml文件全部重新替换。恢复方案:登录Service OM,选择“服务列表 > 数据仓库服务” 选择“配置管理 > xml配置”,单击“导出”按钮将xml文件全部导出在导出的xml文件中找到xml,在其中修改磁盘大小,修改方法参见HCS802案例:https://bbs.huaweicloud.com/forum/thread-93174-1-1.html将修改好的xml文件打包datastoreconfig 上传至obs或swift上 然后在导入xml文件 OBS场景步骤 1 使用升级用户登录OBS Browser。 步骤 2 在OBS Browser页面进入“dws-instance-regionName”桶,选择上传,将zip软件包上传至该桶。 ----结束dws-instance-regionName需要适配${bucket_name}:CDK参数中的instance.obsBucketNam或者rds_obs_info表中readOnly属性的桶的桶名swift场景步骤 1 以fusionclouddeploy用户登录HCSD节点,将XML包zip上传到HCSD节点的/tmp目录下。步骤 2 执行如下命令上传软件包到swift的dws-instance-regionName桶中。ip=`ifconfig eth0 |grep -w inet |awk '{print $2}'`hostname=`hostname`echo "$ip $hostname" >> /etc/hostsecho "op_svc_dws_ak op_svc_dws_sk file_name 1 obs_url obs_port uploadobject dws-instance-regionName" | java -jar udstool.jarop_svc_dws_ak和op_svc_dws_sk是升级用户的ak和sk明文。obs_url和obs_port是swift的地址和端口号信息。file_name是需要上传到swift的dws-instance-regionName桶的软件包dws-instance-regionName桶名需要适配${bucket_name}:CDK参数中的obsBucketNam或者rds_obs_info表中readOnly属性的桶的桶名。/tmp/instance目录下(除了jar)所有软件包,逐个软件包执行上传命令。执行上传命令结果打印包括“upload object to obs success”表示上传成功。步骤 3 上传完成后执行如下命令清理软件包。rm -rf /tmp/ 8.1.1-datastoreconfig----结束导入XML配置步骤 1 登录Service OM,选择“服务列表 > 数据仓库服务”。步骤 2 选择“配置管理 > xml配置”,单击“导入”按钮,选择“目标版本-datastoreconfig.zip”,单击“确认”完成导入配置。----结束过程参见升级方案上传软件包和导入XML文件配置这两步:https://support.huawei.com/enterprise/zh/doc/EDOC1100238642  按照主备两副本部署集群,则修改好后的总容量是:节点数*单节点容量/2  
  • [交流吐槽] Tomcat有几种部署方式?
    直接把Web项目放在webapps下,Tomcat会自动将其部署在server.xml文件上配置<Context>节点,设置相关的属性即可通过Catalina来进行配置:进入到conf\Catalina\localhost文件下,创建一个xml文件,该文件的名字就是站点的名字。编写XML的方式来进行设置。
  • [二次开发] 【mrs1】【Hive二次开发】怎么用druid管理hive连接,代码实例中xml和jaas.conf没看出有什么用?
    mrs中hive二次开发,怎么使用druid管理hive连接。代码例子core-site.xml和user.hive.jaas.conf没看出有什么用。JDBCExamplePreLogin比JDBCExample 多了login。登录和不登录有什么区别?不需要写LoginUtil.setJaasConf、LoginUtil.setZookeeperServerPrincipal、LoginUtil.login也可以连接hive用spark引擎执行语句吗?
  • [问题求助] Cannot download repomd.xml
    CentOS 8.2 安装 git 报如下错误,是什么原因呀?
  • [技术干货] netconf、restconf、yang、schema的关系
    通信机制:传统的通信机制:SNMP和CLI。CLI多用于网管下发配置。SNMP主要用于获取GET,查询数据,获取状态数据,统计数据。新兴的通信机制:Netconf与SNMP最大的区别配置和状态数据是分开的,操作可分开,可容易获取配置数据。Netconf用XML文件传输。Restconf是基于Web的简化的Netconf。网管和设备间通信一般用Netconf,Web APP和应用设备之间不适合用复杂的Netconf,一般用Restconf,Restconf也支持XML文件传输。模型语言:MIB没有结构嵌套定义,通过OID唯一标识。表是平行结构,比较复杂。YANG相比MIB,增加了结构嵌套定义、条件语句定义、对象rpc方法定义,通过名字路径标识。Schema也可以定义嵌套结构和对象方法,也通过名字路径标识。但Schema是标签定义语言,Yang不是标签定义语言。Yang是已经推成RFC标准的语言,Schema是各厂家自行定义的规范,不统一不标准。目前Schema在定义上也不如Yang丰富,比如没有条件语句的定义。模型语言的不同不影响通信机制。不管模型是用Yang写还是用Schema写,在netconf或restconf网管和设备间交互的xml报文内容上没任何差异。
  • [问题求助] 【IVS3800】【获取视频 URL 信息】请求返回错误码119108001,XML数据不合法
    【功能模块】获取视频 URL 信息【操作步骤&问题现象】1、登录2、获取子设备列表3、获取视频url信息,请求返回错误码119108001,XML数据不合法这是一个post请求,参数为接送,返回值也是json。为什么会出现XML数据不合法的错误提示呢?说明:故意使用错误参数,会返回参数错误的错误码。使用文档:eSDK IVS V200R019C50 接口参考 (RESTFUL) 
  • [技术干货] Studio点击运行启动时间长或者点击运行报错Get xml namespace Infoexception code 502
    问题现象:现象一、现象二、问题原因:操作系统中设置了代理服务器,但未屏蔽“127.0.0.1”导致studio或者执行器因网络问题通信失败。解决办法:打开Windows设置页面,选择“网络和Internet”,然后选择打开“代理”的窗口页面,在下方“手动设置代理”区域,“请勿对于以下列条目开头地址使用代理服务器”下方的输入框中添加“127.0.0.1”,点击“保存”,然后重启PC,重新运行脚本。 注:如以上操作仍无法解决问题,可通过华为云论坛或者微信公众号提问
  • [技术干货] YANG文件和XML文件关系
    控制器使用YANG文件(类似模板空模板),填上数据,就可以生成XML文件发给设备。设备使用YANG文件,校验XML文件,就可以解析出数据。如YANG文件:list server {  key "name";  unique "ip port";  leaf name {    type string;  }  leaf ip {    type inet:ip-address;  }  leaf port {    type inet:port-number;  }}数据:name="smtp"ip=192.0.2.1port=25name="http"ip=192.0.2.1port=name="ftp"ip=192.0.2.1port=生成的XML文件:<server>  <name>smtp</name>  <ip>192.0.2.1</ip>  <port>25</port></server><server>  <name>http</name>  <ip>192.0.2.1</ip></server><server>  <name>ftp</name>  <ip>192.0.2.1</ip></server>
  • [技术干货] Netconf协议学习第二期
    Netconf建模语言:Schema:Schema是为了描述XML文档而定义的一套规则。Schema文件中定义了设备所有管理对象,以及管理对象的层次关系、读写属性和约束条件。设备通过Schema文件向网管提供配置和管理设备的接口。Schema文件类似于SNMP的MIB文件。YANG:YANG是专门为NETCONF协议设计的数据建模语言,用来为NETCONF协议设计可操作的配置数据、状态数据模型、远程调用(RPCs)模型和通知机制等。YANG数据模型定位为一个面向机器的模型接口,明确定义数据结构及其约束,可以更灵活、更完整的进行数据描述。NETCONF Client和Server之间使用RPC机制进行通信。Client必须和Server成功建立一个安全的、面向连接的会话才能进行通信。Client向Server发送一个RPC请求,Server处理完用户请求后,给Client发送一个回应消息。Client的RPC请求和Server的回应消息全部使用XML编码。NETCONF协议提供了定义capabilities语法语意规范,协议允许Client与Server交互各自支持的capabilities,Client只能发送Server支持的capabilities范围内的操作请求。XML编码:XML作为NETCONF协议的编码格式,用文本文件表示复杂的层次化数据,即支持使用传统的文本编译工具,也支持使用XML专用的编辑工具读取、保存和操作配置数据。基于XML网络管理的主要思想是利用XML的强大数据表示能力,使用XML描述被管理数据和管理操作,使管理信息成为计算机可以理解的数据库,提高计算机对网络管理数据的处理能力,从而提高网络管理能力。XML编码格式文件头为<?xml version="1.0" encoding="UTF-8"?>,其中:<?:表示一条指令的开始。xml:表示此文件是XML文件。version:NETCONF协议版本号。"1.0"表示使用XML1.0标准版本。encoding:字符集编码格式,当前仅支持UTF-8编码。?>:表示一条指令的结束。RPC模式:NETCONF协议使用RPC通信模式,采用XML编码的和元素提供独立于传输层协议的请求和回应消息框架。能力集(Capabliity):NETCONF能力集是补充基本NETCONF规范的一组功能。 该能力由统一资源标识符(URI)标识。能力集扩展了设备的基本操作,描述了附加操作和操作中允许的内容。客户端可以发现服务器的功能,并使用由这些能力集定义的任何其他操作,参数和内容。能力集定义可以命名一个或多个依赖的能力集。 为了支持一种能力集,服务器必须支持它所依赖的任何能力集。
  • [技术干货] Xpath语法格式总结
    经常在工作中会使用到XPath的相关知识,但每次总会在一些关键的地方不记得或不太清楚,所以免不了每次总要查一些零碎的知识,感觉即很烦又浪费时间,所以对XPath归纳及总结一下。在这篇文章中你将能学习到:XPath简介XPath 路径表达式详解XPath在DOM,XSLT及XQuery中的应用XPath简介XPath是W3C的一个标准。它最主要的目的是为了在XML1.0或XML1.1文档节点树中定位节点所设计。目前有XPath1.0和XPath2.0两个版本。其中Xpath1.0是1999年成为W3C标准,而XPath2.0标准的确立是在2007年。W3C关于XPath的英文详细文档请见:http://www.w3.org/TR/xpath20/ 。XPath是一种表达式语言,它的返回值可能是节点,节点集合,原子值,以及节点和原子值的混合等。XPath2.0是XPath1.0的超集。它是对XPath1.0的扩展,它可以支持更加丰富的数据类型,并且XPath2.0保持了对XPath1.0的相对很好的向后兼容性,几乎所有的XPath2.0的返回结果都可以和XPath1.0保持一样。另外XPath2.0也是XSLT2.0和XQuery1.0的用于查询定位节点的主表达式语言。XQuery1.0是对XPath2.0的扩展。关于在XSLT和XQuery中使用XPath表达式定位节点的知识在后面的实例中会有所介绍。在学习XPath之前你应该对XML的节点,元素,属性,原子值(文本),处理指令,注释,根节点(文档节点),命名空间以及对节点间的关系如:父(Parent),子(Children),兄弟(Sibling),先辈(Ancestor),后代(Descendant)等概念有所了解。这里不在说明。XPath路径表达式在本小节下面的内容中你将可以学习到:路径表达式语法相对/绝对路径表达式上下文谓词(筛选表达式)及轴的概念运算符及特殊字符常用表达式实例函数及说明这里给出一个实例Xml文件。下面的说明及实例都是基于该XML文件。1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465<?xml version="1.0" encoding="UTF-8"?><!-- edited with XMLSpy v2008 rel. 2 sp2 (http://www.altova.com ) by Administrator --><?xml-stylesheet type="text/xsl" href="messages.xsl" rel="external nofollow" ?><messages> <message id="1"> <sender>gukaitong@gmail.com</sender> <to>anonymous@gmail.com <group name="IT"> <address>111@gmail.com</address> <address>222@gmail.com</address> <address>aaa@gmail.com</address> <address>bbb@gmail.com</address> <address>ccc@gmail.com</address> </group> </to> <subject>This is a sample</subject> <datetime date="2008-12-11" time="12:00:00" formatted="12/11/2008 12:00AM">2008-12-11T12:00:00Z</datetime> <body> Are you interested in?  <attachments> <attachment id="1">  <message id="0">  <sender>anonymous@gmail.com</sender>  <to>gukaitong@gmail.com</to>  <body>We strongly recommend the following books  <books xmlns:amazon="http://www.amazon.com/books/schema ">  <amazon:book>   <name>Professional C# 2008 </name>   <country>USA</country>   <price>37.79</price>   <year>2007</year>  </amazon:book>  <amazon:book>   <name>Microsoft Visual C# 2008 Step by Step </name>   <country>USA</country>   <price>26.39 </price>   <year>2008</year>  </amazon:book>  <amazon:book>   <name>C# in Depth</name>   <country>USA</country>   <price>29.69 </price>   <year>2006</year>  </amazon:book>  <amazon:book>   <name>Thinking in Java</name>   <country>USA</country>   <price>23.69 </price>   <year>2004</year>  </amazon:book>  </books>  </body>  </message> </attachment> </attachments> </body> </message> <message id="2"> <sender>333@gmail.com</sender> <to>444@gmail.com</to> <subject>No title</subject> <body/> </message></messages>路径表达式语法:路径 = 相对路径 | 绝对路径XPath路径表达式 = 步进表达式 | 相对路径 "/"步进表达式。步进表达式=轴 节点测试 谓词说明:其中轴表示步进表达式选择的节点和当前上下文节点间的树状关系(层次关系),节点测试指定步进表达式选择的节点名称扩展名,谓词即相当于过滤表达式以进一步过滤细化节点集。谓词可以是0个或多个。多个多个谓词用逻辑操作符and, or连接。取逻辑非用not()函数。请看一个典型的XPath查询表达式:/messages/message//child::node()[@id=0],其中/messages/message是路径(绝对路径以"/"开始),child::是轴表示在子节点下选择,node()是节点测试表示选择所有的节点。[@id=0]是谓词,表示选择所有有属性id并且值为0的节点。相对路径与绝对路径:如果"/"处在XPath表达式开头则表示文档根元素,(表达式中间作为分隔符用以分割每一个步进表达式)如:/messages/message/subject是一种绝对路径表示法,它表明是从文档根开始查找节点。假设当前节点是在第一个message节点【/messages/message[1]】,则路径表达式subject(路径前没有"/")这种表示法称为相对路径,表明从当前节点开始查找。具体请见下面所述的"表达式上下文"。表达式上下文(Context):上下文其实表示一种环境。以明确当前XPath路径表达式处在什么样的环境下执行。例如同样一个路径表达式处在对根节点操作的环境和处在对某一个特定子节点操作的环境下执行所获得的结果可能是完全不一样的。也就是说XPath路径表达式计算结果取决于它所处的上下文。XPath上下文基本有以下几种:当前节点(./):如./sender表示选择当前节点下的sender节点集合(等同于下面所讲的"特定元素",如:sender)父节点(../):如../sender表示选择当前节点的父节点下的sender节点集合根元素(/):如/messages表示选择从文档根节点下的messages节点集合.根节点(/*):这里的*是代表所有节点,但是根元素只有一个,所以这里表示根节点。/*的返回结果和/messages返回的结果一样都是messages节点。递归下降(//):如当前上下文是messages节点。则//sender将返回以下结果:/messages//sender :<sender>gkt1980@gmail.com</sender><sender>111@gmail.com</sender><sender>333@gmail.com</sender>/messages/message[1]//sender:<sender>gkt1980@gmail.com</sender><sender>111@gmail.com</sender>我们可以看出XPath表达式返回的结果是:从当前节点开始递归步进搜索当前节点下的所有子节点找到满足条件的节点集。特定元素如sender:表示选择当前节点下的sender节点集合,等同于(./sender)注意:在执行XPath时一定要注意上下文。即当前是在哪个节点下执行XPath表达式。这在XMLDOM中很重要。如:在XMLDOM中的selectNodes,selectSingleNode方法的参数都是一个XPath表达式,此时这个XPath表达式的执行上下文就是调用这个方法的节点及它所在的环境。更多信息请参见:http://www.w3.org/TR/xpath20/谓词(筛选表达式)及轴的概念:XPath的谓词即筛选表达式,类似于SQL的where子句.轴名称结果ancestor选取当前节点的所有先辈(父、祖父等)ancestor-or-self选取当前节点的所有先辈(父、祖父等)以及当前节点本身attribute选取当前节点的所有属性child选取当前节点的所有子元素。descendant选取当前节点的所有后代元素(子、孙等)。descendant-or-self选取当前节点的所有后代元素(子、孙等)以及当前节点本身。following选取文档中当前节点的结束标签之后的所有节点。namespace选取当前节点的所有命名空间节点parent选取当前节点的父节点。preceding直到所有这个节点的父辈节点,顺序选择每个父辈节点前的所有同级节点preceding-sibling选取当前节点之前的所有同级节点。self选取当前节点。运算符及特殊字符:运算符/特殊字符说明/此路径运算符出现在模式开头时,表示应从根节点选择。//从当前节点开始递归下降,此路径运算符出现在模式开头时,表示应从根节点递归下降。.当前上下文。..当前上下文节点父级。*通配符;选择所有元素节点与元素名无关。(不包括文本,注释,指令等节点,如果也要包含这些节点请用node()函数)@属性名的前缀。@*选择所有属性,与名称无关。:命名空间分隔符;将命名空间前缀与元素名或属性名分隔。( )括号运算符(优先级最高),强制运算优先级。[ ]应用筛选模式(即谓词,包括"过滤表达式"和"轴(向前/向后)")。[ ]下标运算符;用于在集合中编制索引。|两个节点集合的联合,如://messages/message/to | //messages/message/cc-减法。div,浮点除法。and, or逻辑运算。mod求余。not()逻辑非=等于!=不等于特殊比较运算符< 或者 &lt;<= 或者 &lt;=> 或者 &gt;>= 或者 &gt;=需要转义的时候必须使用转义的形式,如在XSLT中,而在XMLDOM的scripting中不需要转义。常用表达式实例:/Document Root文档根./*选择文档根下面的所有元素节点,即根节点(XML文档只有一个根节点)/node()根元素下所有的节点(包括文本节点,注释节点等)/text()查找文档根节点下的所有文本节点/messages/messagemessages节点下的所有message节点/messages/message[1]messages节点下的第一个message节点/messages/message[1]/self::node()第一个message节点(self轴表示自身,node()表示选择所有节点)/messages/message[1]/node()第一个message节点下的所有子节点/messages/message[1]/*[last()]第一个message节点的最后一个子节点/messages/message[1]/[last()]Error,谓词前必须是节点或节点集/messages/message[1]/node()[last()]第一个message节点的最后一个子节点/messages/message[1]/text()第一个message节点的所有子节点/messages/message[1]//text()第一个message节点下递归下降查找所有的文本节点(无限深度)/messages/message[1] /child::node()/messages/message[1] /node()/messages/message[position()=1]/node()//message[@id=1] /node()第一个message节点下的所有子节点//message[@id=1] //child::node()递归所有子节点(无限深度)//message[position()=1]/node()选择id=1的message节点以及id=0的message节点/messages/message[1] /parent::*Messages节点/messages/message[1]/body/attachments/parent::node()/messages/message[1]/body/attachments/parent::* /messages/message[1]/body/attachments/..attachments节点的父节点。父节点只有一个,所以node()和* 返回结果一样。(..也表示父节点. 表示自身节点)//message[@id=0]/ancestor::*Ancestor轴表示所有的祖辈,父,祖父等。向上递归//message[@id=0]/ancestor-or-self::*向上递归,包含自身//message[@id=0]/ancestor::node()对比使用*,多一个文档根元素(Document root)/messages/message[1]/descendant::node()//messages/message[1]//node()递归下降查找message节点的所有节点/messages/message[1]/sender/following::*查找第一个message节点的sender节点后的所有同级节点,并对每一个同级节点递归向下查找。//message[@id=1]/sender/following-sibling::*查找id=1的message节点的sender节点的所有后续的同级节点。//message[@id=1]/datetime/@date查找id=1的message节点的datetime节点的date属性//message[@id=1]/datetime[@date]//message/datetime[attribute::date]查找id=1的message节点的所有含有date属性的datetime节点//message[datetime]查找所有含有datetime节点的message节点//message/datetime/attribute::*//message/datetime/attribute::node()//message/datetime/@*返回message节点下datetime节点的所有属性节点//message/datetime[attribute::*]//message/datetime[attribute::node()]//message/datetime[@*]//message/datetime[@node()]选择所有含有属性的datetime节点//attribute::*选择根节点下的所有属性节点//message[@id=0]/body/preceding::node()顺序选择body节点所在节点前的所有同级节点。(查找顺序为:先找到body节点的顶级节点(根节点),得到根节点标签前的所有同级节点,执行完成后继续向下一级,顺序得到该节点标签前的所有同级节点,依次类推。)注意:查找同级节点是顺序查找,而不是递归查找。//message[@id=0]/body/preceding-sibling::node()顺序查找body标签前的所有同级节点。(和上例一个最大的区别是:不从最顶层开始到body节点逐层查找。我们可以理解成少了一个循环,而只查找当前节点前的同级节点)//message[@id=1]//*[namespace::amazon]查找id=1的所有message节点下的所有命名空间为amazon的节点。//namespace::*文档中的所有的命名空间节点。(包括默认命名空间xmlns:xml)//message[@id=0]//books/*[local-name()='book']选择books下的所有的book节点,注意:由于book节点定义了命名空间<amazone:book>.若写成//message[@id=0]//books/book则查找不出任何节点。//message[@id=0]//books/*[local-name()='book' and namespace-uri()='http://www.amazon.com/books/schema']选择books下的所有的book节点,(节点名和命名空间都匹配)//message[@id=0]//books/*[local-name()='book'][year>2006]选择year节点值>2006的book节点//message[@id=0]//books/*[local-name()='book'][1]/year>2006指示第一个book节点的year节点值是否大于2006.返回xs:boolean: true函数及说明:值得欣喜的是XPath函数和XSLT,XQuery等共享函数库,函数库为我们提供了功能丰富的各种函数的调用,我们也可以自定义自己的函数。这里不再对每个函数的用法逐一说明,中文的可以参考这个网站, https://www.jb51.net/w3school/xpath/index.htm XPath在DOM,XSLT及XQuery中的应用DOM:123456789101112131415161718192021<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd "><html xmlns="http://www.w3.org/1999/xhtml "><head><title>XPath Test</title></head><body><script language="javascript" type="text/javascript">var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");xmlDoc.async="false";xmlDoc.load("messages.xml");xmlDoc.setProperty("SelectionLanguage", "XPath"); var sPath = "/messages/message[1]//books/*[local-name()='book']";var bookNodes = xmlDoc.selectNodes(sPath);document.write("<ul>");for ( var i = 0; i < bookNodes.length; i++) {document.write("<li>" + bookNodes[i].childNodes[0].text + "</li>");}document.write("</ul>");</script></body></html>注意:我们若使用new ActiveXObject("Microsoft.XMLDOM")则需要注意的是:因为早期的XMLDOM的SelectionLanguage属性默认是正则表达式,不是XPath语言。所以需要指定这样一条语句xmlDoc.setProperty("SelectionLanguage", "XPath"); 以支持XPath查询表达式。.若没有指定SelectionLanguage属性值为XPath则要注意以下情况:数组下标从0开始(我们知道在XPath查询表达式中数组下标是从1开始的)不支持在XPath查询表达式中使用XPath函数。总结以上就是本文关于Xpath语法格式总结的全部内容,希望对大家有所帮助
  • [技术干货] 初识XML基础知识
    XML 文档形成了一种树结构,它从"根部"开始,然后扩展到"枝叶"。一个 XML 文档实例XML 文档使用简单的具有自我描述性的语法:1234567<?xml version="1.0" encoding="UTF-8"?><note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></note>第一行是 XML 声明。它定义 XML 的版本(1.0)和所使用的编码(UTF-8 : 万国码, 可显示各种语言)。下一行描述文档的根元素(像在说:"本文档是一个便签"):<note>接下来 4 行描述根的 4 个子元素(to, from, heading 以及 body):1234<to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body>最后一行定义根元素的结尾:</note>您可以假设,从这个实例中,XML 文档包含了一张 Jani 写给 Tove 的便签。XML 具有出色的自我描述性,您同意吗?XML 文档形成一种树结构XML 文档必须包含根元素。该元素是所有其他元素的父元素。XML 文档中的元素形成了一棵文档树。这棵树从根部开始,并扩展到树的最底端。所有的元素都可以有子元素:12345<root><child><subchild>.....</subchild></child></root>父、子以及同胞等术语用于描述元素之间的关系。父元素拥有子元素。相同层级上的子元素成为同胞(兄弟或姐妹)。所有的元素都可以有文本内容和属性(类似 HTML 中)。实例:上图表示下面的 XML 中的一本书:XML定义:用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML发展史?简单提一下Markup Language历史:1969:GML(Generalized Markup Language)--(IBMResearch)1968: SGML(Standard Generalized Markup Language)--(ISO)1989:HTML(Hypertext Markup Language)--TimBerners Lee作为SGML的一个实例,它的DTD(一种规则)作为标准被固定下来,因此Html不能定义其他符号化语言的源语言。而XML就可以哦,所以就出现了XML。1998/2:XML(Extensible markup Language)W3C(World WideWeb Consortium)SGML的子集XML(定义数据和元数据),XSL(style sheet 描述,就像CSS于html)SGMLvsXMLvs HTML:SGML:长时间存放电子文件。      使用费用高,大都在MainFrame平台。XML:网页文件语言、数据交换语言、数据处理语言、文件整合语言。应用范围几乎没有限制。HTML:网页呈现语言、超文本语言。 XML包括:文件内容:结构定义:DTD(Document TypeDefinitied)XMLSchema(DTD+Datatype)显示:XSLXSLT+XHTML+Xpath+(Xlink) 从html到XML:比较:HTML:html只能提供数据显示功能。浏览器提供单一语言机制。网页搜索不精确。扩充困难。网页逻辑关系,网页分级认证不易建立。web资源受限制,无法让其他应用使用。XML:开放平台。可以做任何程序的输入数据。XML改变了浏览器内部的结构。XML具体应用:XML的一个最主要的应用就是作为系统的配置文件,很多系统的配置文件都是用XML,Spring中application中XML,Hibernate中XML,在这里主要说说ASP.NET中的XML。1、配置文件中。 世间所有的相遇都是久别的重逢,我们曾建无数次的与XML擦肩而过,机房收费系统的配置文件,新闻发布系统的配置文件,以及我们建立每一个应用程序下的配置文件,配置文件的后缀名为.config,而我们的XML文件为.xml后缀,为什么vs中没有直接用Web.xml而是用的Web.config?我想可能是微软想把一个东西封装成知己的,就像箱子里是同样的苹果,我想变成我的,我就要弄好一个包装,并且贴上我的标签,告诉别人,这是我特有的。但事实上呢,网上有这样的回答:config是配置,.xml是软件内置的网页文件。表象:前者:用在web.config或者app.config之类.<appSettings>是系统约定的节点,约定在这个节点下的所有<add />节点会被System.Configuration.ConfigurationManager.AppSetting读到.后者:完全的自定义接点,appSettings表示什么意思,add表示什么意思将在自己写的xml解析方法里指定和使用.简单来说:简单来说,config是xml的一个子集。通常的xml都是只定义基本语法,至于节点的层次,节点格式,节点的含义,节点怎么被解析都是你自己定义.使得你的xml文件能和你的xml解析方法对应。而web.config,app.config这类,是Microsoft和软件作者已经定义好了节点意义,你只需要遵守他的格式和规则,就能达到配置作用。通俗讲:打个可能不太好的比方:xml文件本身是扑克牌.config是斗地主。你用config,就不需要自己制定规则,按照它的规则打就行。很方便,但是你不能违反他的规则。而你自己写xml,还要先制定好规则,规则怎么定都随便你,然后按照这个规则出牌.当然,这些都有一个大前提,都满足xml节点规范,你不能制定扑克牌的规则中放入几个麻将牌....2、ASP.NET控件与XML。在学习ASP.NET的视频的时候,用到很多控件,例如LIstBox,DropDownList常用控件,DataList,GridView等数据控件,ADO.NETDataSet操作XML文件,以及前两篇博客提到的导航控件menu和treeview在进行数据源绑定的时候都可以绑定XML文件。本文全面的初识了XML,让大家从各个方面了解到了XML的定义、XML的发展史、和html的比较等一些知识,希望对大家的学习有所帮助。实例中的根元素是 <bookstore>。文档中的所有 <book> 元素都被包含在 <bookstore> 中。<book> 元素有 4 个子元素:<title>、<author>、<year>、<price>。以上就是简单了解XML 树结构的详细内容
  • [技术干货] 简单了解XML 树结构
    XML 文档形成了一种树结构,它从"根部"开始,然后扩展到"枝叶"。一个 XML 文档实例XML 文档使用简单的具有自我描述性的语法:1234567<?xml version="1.0" encoding="UTF-8"?><note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></note>第一行是 XML 声明。它定义 XML 的版本(1.0)和所使用的编码(UTF-8 : 万国码, 可显示各种语言)。下一行描述文档的根元素(像在说:"本文档是一个便签"):<note>接下来 4 行描述根的 4 个子元素(to, from, heading 以及 body):1234<to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body>最后一行定义根元素的结尾:</note>您可以假设,从这个实例中,XML 文档包含了一张 Jani 写给 Tove 的便签。XML 具有出色的自我描述性,您同意吗?XML 文档形成一种树结构XML 文档必须包含根元素。该元素是所有其他元素的父元素。XML 文档中的元素形成了一棵文档树。这棵树从根部开始,并扩展到树的最底端。所有的元素都可以有子元素:12345<root><child><subchild>.....</subchild></child></root>父、子以及同胞等术语用于描述元素之间的关系。父元素拥有子元素。相同层级上的子元素成为同胞(兄弟或姐妹)。所有的元素都可以有文本内容和属性(类似 HTML 中)。实例:上图表示下面的 XML 中的一本书:1234567891011121314151617181920<bookstore>  <book category="COOKING">    <title lang="en">Everyday Italian</title>    <author>Giada De Laurentiis</author>    <year>2005</year>    <price>30.00</price>  </book>  <book category="CHILDREN">    <title lang="en">Harry Potter</title>    <author>J K. Rowling</author>    <year>2005</year>    <price>29.99</price>  </book>  <book category="WEB">    <title lang="en">Learning XML</title>    <author>Erik T. Ray</author>    <year>2003</year>    <price>39.95</price>  </book></bookstore>实例中的根元素是 <bookstore>。文档中的所有 <book> 元素都被包含在 <bookstore> 中。<book> 元素有 4 个子元素:<title>、<author>、<year>、<price>。以上就是简单了解XML 树结构的详细内容
  • [问题求助] 使用CSE进行微服务调用发送是XMl报文格式,接受方String类型,结果参数莫名多了重复的 &quot;&quot;引号
    急急急,求助!!!!!       java实习生第一次接触Service combService comb,自己在本服务写代码,自测通过。结果到项目测试,其他服务调用出错,比较着急,网上没有解决办法,公司说是:因为发的xml报文 应该是框架 把这个报文转义了,你在这里想办法 把报文转义的去掉 就可以了,直接通过Http调用就不会有这个问题的,主要是用了CSE。1、这是调用过程2:debug发送的string类型的xml报文3.接受方 接受的是String类型的xml报文,就在这产生错误,多了""。4:从这里看,明显接受方的xml报文解析的不正确,多了首尾""。不知道有没有大佬了解这的原因,跪求讲解。
  • [工具链] 【MDC 300F】【ARXML生成代码】导入ARXML进入MDS进行generate后没有src文件夹
    我按照产品手册配置了一个简单的不带DDS和SOME/ip模块的XML文件,然后试图使用MDS生成对应的代码。在生成的generate文件夹下只有include文件夹,没有src文件夹。之后用sample里的demo也没有生成对应的src文件夹。请问这是什么情况?自己写的xml导入后generate结果sample里的demo导入后的情况请问问题可能出现在哪里?【日志信息】(可选,上传日志内容或者附件)
  • [技术干货] Setting.xml文件详解
    1. 总体结构<!--声明语句--> <?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <!-- 本地仓库的路径。默认值为${user.home}/.m2/repository。 --> <localRepository>usr/local/maven</localRepository>    <!--Maven是否需要和用户交互以获得输入。需要设置成true,否则false。默认true。--> <interactiveMode>true</interactiveMode> <!--Maven是否需要使用plugin-registry.xml文件来管理插件版本。如果需要让Maven使用文件${user.home}/.m2/plugin-registry.xml来管理插件版本,则设为true。默认为 false。--> <usePluginRegistry>false</usePluginRegistry> <!--表示Maven是否需要在离线模式下运行。需要则为true,默认为false。一般应用于网络不通或者出于其它安全考虑 --> <offline>false</offline> <!--当插件的组织Id(groupId)没有显式提供时,供搜寻插件组织Id(groupId)的列表。该元素包含一个pluginGroup元素列表,每个子元素包含了一个组织Id(groupId)。当我 们使用某个插件,并且没有在命令行为其提供组织Id(groupId)的时候,Maven就会使用该列表。默认情况下该列表包含了org.apache.maven.plugins和org.codehaus.mojo --> <pluginGroups> <!--plugin的组织Id(groupId) -->   <pluginGroup>org.codehaus.mojo</pluginGroup> </pluginGroups> <!--配置不同的代理,多代理profiles 可以应对笔记本或移动设备的工作环境:通过简单的设置profile id就可以很容易的更换整个代理配置。 很少用到--> <proxies> <proxy> <!--唯一标识--> <id>myproxy</id> <!--true则激活此代理 --> <active>true</active> <!--代理的协议--> <protocol>http</protocol> <!--代理的主机名--> <host>proxy.somewhere.com</host> <!--代理的端口--> <port>8080</port> <!--代理的用户名,用户名和密码表示代理服务器认证的登录名和密码。 --> <username>proxyuser</username> <!--代理的密码--> <password>somepassword</password> <!--不该被代理的主机名列表。该列表的分隔符由代理服务器指定;例子中使用了竖线分隔符,使用逗号分隔也很常见。--> <nonProxyHosts>*.google.com|ibiblio.org</nonProxyHosts> </proxy> </proxies> <!--配置服务端的一些设置。一些设置如安全证书不应该和pom.xml一起分发。这种类型的信息应该存在于构建服务器上的settings.xml文件中。--> <servers> <server> <!--该id与distributionManagement中repository元素的id相匹配。--> <id>server001</id> <!--鉴权用户名。鉴权用户名和鉴权密码表示服务器认证所需要的登录名和密码。 --> <username>my_login</username> <!--鉴权密码 密码加密功能已被添加到2.1.0 +。详情请访问密码加密页面--> <password>my_password</password> <!--鉴权时使用的私钥位置。和前两个元素类似,私钥位置和私钥密码指定了一个私钥的路径(默认是${user.home}/.ssh/id_dsa)以及如果需要的话,一个密语。将来passphrase和password元素可能会被提取到外部,但目前它们必须在settings.xml文件以纯文本的形式声明。 --> <privateKey>${usr.home}/.ssh/id_dsa</privateKey> <!--鉴权时使用的私钥密码。--> <passphrase>some_passphrase</passphrase> <!--文件被创建时的权限。如果在部署的时候会创建一个仓库文件或者目录,这时候就可以使用权限(permission)。这两个元素合法的值是一个三位数字,其对应了unix文件系统的权限,如664,或者775。 --> <filePermissions>664</filePermissions> <!--目录被创建时的权限。 --> <directoryPermissions>775</directoryPermissions> </server> </servers> <!--为仓库列表配置的下载镜像列表。高级设置请参阅镜像设置页面 --> <mirrors> <mirror> <!--唯一标识符,区分不同的mirror元素 --> <id>planetmirror.com</id> <!--镜像名称 --> <name>PlanetMirror Australia</name> <!--该镜像的URL。构建系统会优先考虑使用该URL,而非使用默认的服务器URL,就是下载jar包的路径 --> <url>http://downloads.planetmirror.com/pub/maven2</url> <!--被镜像的服务器的id。例如,如果我们要设置了一个Maven中央仓库(http://repo.maven.apache.org/maven2/)的镜像,就需要将该元素设置成central。这必须和中央仓 库的id central完全一致。--> <mirrorOf>central</mirrorOf> </mirror> </mirrors> <!--根据环境参数来调整构建配置的列表。settings.xml中的profile元素是pom.xml中profile元素的裁剪版本。这里的profile元素只关心构建系统这个整体,而非单独的项目对象模型设置。如果一个settings中的profile被激活,它的值会覆盖任何其它定义在POM中或者profile.xml中的带有相同id的profile。 --> <profiles> <profile> <!--唯一标识--> <id>test</id> <!--自动触发profile的条件逻辑。Activation是profile的开启钥匙。如POM中的profile一样,profile的力量来自于它能够在某些特定的环境中自动使用某些特定的值;这些环境通过activation元素指定。activation元素并不是激活profile的唯一方式。settings.xml文件中的activeProfile元素可以。profile也可以通过在命令行,使用-P标记和逗号分隔的列表来显式的激活(如,-P test)。--> <activation> <!--默认是否激活该profile--> <activeByDefault>false</activeByDefault> <!--当匹配的jdk被检测到,profile被激活。例如,1.4激活JDK1.4,1.4.0_2,而!1.4激活所有版本不是以1.4开头的JDK。--> <jdk>1.5</jdk> <!--当存在匹配的操作系统属性,profile被激活。一般不使用--> <os> <!--激活profile的操作系统的名字 --> <name>Windows 7</name> <!--激活profile的操作系统所属家族(如 'windows') --> <family>Windows</family> <!--激活profile的操作系统体系结构 --> <arch>x64</arch> <!--激活profile的操作系统版本--> <version>5.1.2600</version> </os> <!--如果Maven检测到某一个xml节点等于下面name的值,并且该节点的值等于下面value的值。那么激活这个profile。如果值字段是空的,那么存在属性名称字段就会激活--> <![CDATA[比如根据下面的配置,当存在<mavenVersion>2.0.3</mavenVersion>节点时将激活此profile]]> <property> <!--激活profile的属性的名称--> <name>mavenVersion</name> <!--激活profile的属性的值 --> <value>2.0.3</value> </property> <!--提供一个文件名,通过检测该文件的存在与否来激活profile--> <file> <!--如果指定的文件存在,则激活profile。 --> <exists>${basedir}/file2.properties</exists> <!--如果指定的文件不存在,则激活profile。--> <missing>${basedir}/file1.properties</missing> </file> </activation> <!--对应profile的自定义属性列表。Maven属性和Ant中的属性一样,可以用来存放一些值。这些值可以在POM中的任何地方使用标记${X}来使用,这里X是指属性的名称。属性有五种不同的形式,并且都能在settings.xml文件中访问。 1. env.X: 在一个变量前加上"env."的前缀,会返回一个shell环境变量。例如,"env.PATH"指代了$path环境变量(在Windows上是%PATH%)。 2. project.x:指代了POM中对应的元素值。例如: <project><version>1.0</version></project>通过${project.version}获得version的值。 3. settings.x: 指代了settings.xml中对应元素的值。例如:<settings><offline>false</offline></settings>通过 ${settings.offline}获得offline的值。 4. Java System Properties: 所有可通过java.lang.System.getProperties()访问的属性都能在POM中使用该形式访问,例如 ${java.home}。 5. x: 在<properties/>元素中,或者外部文件中设置,以${someVar}的形式使用。 --> <!--当该profile被激活,则可以再POM中使用${user.install}。--> <properties> <user.install>${user.home}/our-project</user.install> </properties> <!--远程仓库列表,它是Maven用来填充构建系统本地仓库所使用的一组远程项目。 --> <repositories> <!--包含需要连接到远程仓库的信息 --> <repository> <!--远程仓库唯一标识--> <id>codehausSnapshots</id> <!--远程仓库名称 --> <name>Codehaus Snapshots</name> <!--如何处理远程仓库里发布版本的下载--> <releases> <!--true或者false表示该仓库是否开启下载--> <enabled>false</enabled> <!--该元素指定更新发生的频率。Maven会比较本地POM和远程POM的时间戳。这里的选项是:always(一直),daily(默认,每日),interval:X(这里X是以分钟为单位的时间间隔),never(从不)。 --> <updatePolicy>always</updatePolicy> <!--当Maven验证构件校验文件失败时该怎么做-ignore(忽略),fail(失败),或者warn(警告)。--> <checksumPolicy>warn</checksumPolicy> </releases> <!--如何处理远程仓库里快照版本的下载。有了releases和snapshots这两组配置,POM就可以在每个单独的仓库中,为每种类型的构件采取不同的策略。例如,可能有人会决定只为开发目的开启对快照版本下载的支持。--> <snapshots> <enabled/><updatePolicy/><checksumPolicy/> </snapshots> <!--远程仓库URL,按protocol://hostname/path形式 --> <url>http://snapshots.maven.codehaus.org/maven2</url> <!--用于定位和排序构件的仓库布局类型-可以是default(默认)或者legacy(遗留)。Maven2为其仓库提供了一个默认的布局;Maven1.x有一种遗留布局。我们可以使用该元素指定布局是default还是legacy--> <layout>default</layout> </repository> </repositories> <!--发现插件的远程仓库列表。仓库是两种主要构件的家。第一种构件被用作其它构件的依赖。这是中央仓库中存储的大部分构件类型。另外一种构件类型是插件。Maven插件是一种特殊类型的构件。由于这个原因,插件仓库独立于其它仓库。pluginRepositories元素的结构和repositories元素的结构类似。每个pluginRepository元素指定一个Maven可以用来寻找新插件的远程地址。--> <pluginRepositories> <!--参见profiles/profile/repositories/repository元素的说明--> <pluginRepository> <releases> <enabled/><updatePolicy/><checksumPolicy/> </releases> <snapshots> <enabled/><updatePolicy/><checksumPolicy/> </snapshots> <id/><name/><url/><layout/> </pluginRepository> </pluginRepositories> </profile> </profiles> <!--手动激活profiles的列表,按照activeProfile的定义顺序激活并应用profiles。如果没有匹配的profile,则什么都不会发生,Maven则会像往常一样运行--> <activeProfiles> <activeProfile>env-test</activeProfile> </activeProfiles> </settings>2. 具体结构2.1 proxies代理<!--配置不同的代理,多代理profiles 可以应对笔记本或移动设备的工作环境:通过简单的设置profile id就可以很容易的更换整个代理配置。 很少用到--> <proxies> <proxy> <!--唯一标识--> <id>myproxy</id> <!--true则激活此代理 --> <active>true</active> <!--代理的协议--> <protocol>http</protocol> <!--代理的主机名--> <host>proxy.somewhere.com</host> <!--代理的端口--> <port>8080</port> <!--代理的用户名,用户名和密码表示代理服务器认证的登录名和密码。 --> <username>proxyuser</username> <!--代理的密码--> <password>somepassword</password> <!--不该被代理的主机名列表。该列表的分隔符由代理服务器指定;例子中使用了竖线分隔符,使用逗号分隔也很常见。--> <nonProxyHosts>*.google.com|ibiblio.org</nonProxyHosts> </proxy> </proxies>2.2 servers服务端的配置<!--配置服务端的一些设置。一些设置如安全证书不应该和pom.xml一起分发。这种类型的信息应该存在于构建服务器上的settings.xml文件中。--> <servers> <server> <!--该id与distributionManagement中repository元素的id相匹配。--> <id>server001</id> <!--鉴权用户名。鉴权用户名和鉴权密码表示服务器认证所需要的登录名和密码。 --> <username>my_login</username> <!--鉴权密码 密码加密功能已被添加到2.1.0 +。详情请访问密码加密页面--> <password>my_password</password> <!--鉴权时使用的私钥位置。和前两个元素类似,私钥位置和私钥密码指定了一个私钥的路径(默认是${user.home}/.ssh/id_dsa)以及如果需要的话,一个密语。将来passphrase和password元素可能会被提取到外部,但目前它们必须在settings.xml文件以纯文本的形式声明。 --> <privateKey>${usr.home}/.ssh/id_dsa</privateKey> <!--鉴权时使用的私钥密码。--> <passphrase>some_passphrase</passphrase> <!--文件被创建时的权限。如果在部署的时候会创建一个仓库文件或者目录,这时候就可以使用权限(permission)。这两个元素合法的值是一个三位数字,其对应了unix文件系统的权限,如664,或者775。 --> <filePermissions>664</filePermissions> <!--目录被创建时的权限。 --> <directoryPermissions>775</directoryPermissions> </server> </servers>2.3 mirrors镜像库<!--为仓库列表配置的下载镜像列表。高级设置请参阅镜像设置页面 --> <mirrors> <mirror> <!--唯一标识符,区分不同的mirror元素 --> <id>planetmirror.com</id> <!--镜像名称 --> <name>PlanetMirror Australia</name> <!--该镜像的URL。构建系统会优先考虑使用该URL,而非使用默认的服务器URL,就是下载jar包的路径 --> <url>http://downloads.planetmirror.com/pub/maven2</url> <!--被镜像的服务器的id。例如,如果我们要设置了一个Maven中央仓库(http://repo.maven.apache.org/maven2/)的镜像,就需要将该元素设置成central。这必须和中央仓 库的id central完全一致。--> <mirrorOf>central</mirrorOf> </mirror> </mirrors>2.4 profile 构建配置<!--根据环境参数来调整构建配置的列表。settings.xml中的profile元素是pom.xml中profile元素的裁剪版本。这里的profile元素只关心构建系统这个整体,而非单独的项目对象模型设置。如果一个settings中的profile被激活,它的值会覆盖任何其它定义在POM中或者profile.xml中的带有相同id的profile。 --> <profiles> <profile> <!--唯一标识--> <id>test</id> <!--自动触发profile的条件逻辑。Activation是profile的开启钥匙。如POM中的profile一样,profile的力量来自于它能够在某些特定的环境中自动使用某些特定的值;这些环境通过activation元素指定。activation元素并不是激活profile的唯一方式。settings.xml文件中的activeProfile元素可以。profile也可以通过在命令行,使用-P标记和逗号分隔的列表来显式的激活(如,-P test)。--> <activation> <!--默认是否激活该profile--> <activeByDefault>false</activeByDefault> <!--当匹配的jdk被检测到,profile被激活。例如,1.4激活JDK1.4,1.4.0_2,而!1.4激活所有版本不是以1.4开头的JDK。--> <jdk>1.5</jdk> <!--当存在匹配的操作系统属性,profile被激活。一般不使用--> <os> <!--激活profile的操作系统的名字 --> <name>Windows 7</name> <!--激活profile的操作系统所属家族(如 'windows') --> <family>Windows</family> <!--激活profile的操作系统体系结构 --> <arch>x64</arch> <!--激活profile的操作系统版本--> <version>5.1.2600</version> </os> <!--如果Maven检测到某一个xml节点等于下面name的值,并且该节点的值等于下面value的值。那么激活这个profile。如果值字段是空的,那么存在属性名称字段就会激活--> <![CDATA[比如根据下面的配置,当存在<mavenVersion>2.0.3</mavenVersion>节点时将激活此profile]]> <property> <!--激活profile的属性的名称--> <name>mavenVersion</name> <!--激活profile的属性的值 --> <value>2.0.3</value> </property> <!--提供一个文件名,通过检测该文件的存在与否来激活profile--> <file> <!--如果指定的文件存在,则激活profile。 --> <exists>${basedir}/file2.properties</exists> <!--如果指定的文件不存在,则激活profile。--> <missing>${basedir}/file1.properties</missing> </file> </activation> <!--对应profile的自定义属性列表。Maven属性和Ant中的属性一样,可以用来存放一些值。这些值可以在POM中的任何地方使用标记${X}来使用,这里X是指属性的名称。属性有五种不同的形式,并且都能在settings.xml文件中访问。 1. env.X: 在一个变量前加上"env."的前缀,会返回一个shell环境变量。例如,"env.PATH"指代了$path环境变量(在Windows上是%PATH%)。 2. project.x:指代了POM中对应的元素值。例如: <project><version>1.0</version></project>通过${project.version}获得version的值。 3. settings.x: 指代了settings.xml中对应元素的值。例如:<settings><offline>false</offline></settings>通过 ${settings.offline}获得offline的值。 4. Java System Properties: 所有可通过java.lang.System.getProperties()访问的属性都能在POM中使用该形式访问,例如 ${java.home}。 5. x: 在<properties/>元素中,或者外部文件中设置,以${someVar}的形式使用。 --> <!--当该profile被激活,则可以再POM中使用${user.install}。--> <properties> <user.install>${user.home}/our-project</user.install> </properties> <!--远程仓库列表,它是Maven用来填充构建系统本地仓库所使用的一组远程项目。 --> <repositories> <!--包含需要连接到远程仓库的信息 --> <repository> <!--远程仓库唯一标识--> <id>codehausSnapshots</id> <!--远程仓库名称 --> <name>Codehaus Snapshots</name> <!--如何处理远程仓库里发布版本的下载--> <releases> <!--true或者false表示该仓库是否开启下载--> <enabled>false</enabled> <!--该元素指定更新发生的频率。Maven会比较本地POM和远程POM的时间戳。这里的选项是:always(一直),daily(默认,每日),interval:X(这里X是以分钟为单位的时间间隔),never(从不)。 --> <updatePolicy>always</updatePolicy> <!--当Maven验证构件校验文件失败时该怎么做-ignore(忽略),fail(失败),或者warn(警告)。--> <checksumPolicy>warn</checksumPolicy> </releases> <!--如何处理远程仓库里快照版本的下载。有了releases和snapshots这两组配置,POM就可以在每个单独的仓库中,为每种类型的构件采取不同的策略。例如,可能有人会决定只为开发目的开启对快照版本下载的支持。--> <snapshots> <enabled/><updatePolicy/><checksumPolicy/> </snapshots> <!--远程仓库URL,按protocol://hostname/path形式 --> <url>http://snapshots.maven.codehaus.org/maven2</url> <!--用于定位和排序构件的仓库布局类型-可以是default(默认)或者legacy(遗留)。Maven2为其仓库提供了一个默认的布局;Maven1.x有一种遗留布局。我们可以使用该元素指定布局是default还是legacy--> <layout>default</layout> </repository> </repositories> <!--发现插件的远程仓库列表。仓库是两种主要构件的家。第一种构件被用作其它构件的依赖。这是中央仓库中存储的大部分构件类型。另外一种构件类型是插件。Maven插件是一种特殊类型的构件。由于这个原因,插件仓库独立于其它仓库。pluginRepositories元素的结构和repositories元素的结构类似。每个pluginRepository元素指定一个Maven可以用来寻找新插件的远程地址。--> <pluginRepositories> <!--参见profiles/profile/repositories/repository元素的说明--> <pluginRepository> <releases> <enabled/><updatePolicy/><checksumPolicy/> </releases> <snapshots> <enabled/><updatePolicy/><checksumPolicy/> </snapshots> <id/><name/><url/><layout/> </pluginRepository> </pluginRepositories> </profile> </profiles>2.5 activeProfiles指定激活的配置<!--手动激活profiles的列表,按照activeProfile的定义顺序激活并应用profiles。如果没有匹配的profile,则什么都不会发生,Maven则会像往常一样运行--> <activeProfiles> <activeProfile>env-test</activeProfile> </activeProfiles>
总条数:62 到第
上滑加载中