快速业务通道

ivy教程(11)-架设仓库(3)-使用命名空间 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
我们的仓库,它看上去很好。

Z:\>dir /s /B /A:-D myrepository\advanced Z:\myrepository\advanced\apache\commons-lang\ivys\ivy-1.0.xml Z:\myrepository\advanced\apache\commons-lang\ivys\ivy-1.0.xml.md5 Z:\myrepository\advanced\apache\commons-lang\ivys\ivy-1.0.xml.sha1 Z:\myrepository\advanced\apache\commons-lang\jars\commons-lang-1.0.jar Z:\myrepository\advanced\apache\commons-lang\jars\commons-lang-1.0.jar.md5 Z:\myrepository\advanced\apache\commons-lang\jars\commons-lang-1.0.jar.sha1

我们甚至可以看一下我们仓库中的commons-lang ivy文件:

<?xml version="1.0" encoding="UTF-8"?> <ivy-module version="1.0"> <info organisation="apache" module="commons-lang" revision="1.0" status="integration" publication="20051124062021" namespace="ibiblio-maven2" /> ......

很好,我们看到组织现在是''apache''。但是ivy是从哪里获得这个的呢?

1. 这是如何工作的?

实际上ivy和以往一样使用同样的仓库作为源仓库,仅仅有一点不同:namespace参数。

<ibiblio name="libraries" root="${ibiblio-maven2-root}" m2compatible="true" namespace="maven2" />

namespace由一系列规则定义而成。这些规则基于正则表达式,并告诉ivy如何从仓 库命名空间转换数据到系统命名空间,换言之,ivy时常运行的命名空间(例如ivy 缓存通常使用系统命名 空间).

对于我们调用maven2的命名空间,我们已经定义了一些规则,这里是一个:

处理导入apache maven1项目的规则

<rule> <!-- imported apache maven1 projects --> <fromsystem> <src org="apache" module=".+"/> <dest org="$m0" module="$m0"/> </fromsystem> <tosystem> <src org="commons-.+" module="commons-.+" /> <src org="ant.*" module="ant.*" /> ... <src org="xmlrpc" module="xmlrpc" /> <dest org="apache" module="$m0"/> </tosystem> </rule>

ivy教程(11)-架设仓库(3)-使用命名空间(3)

时间:2011-08-02 blogjava Sky''s blog

理解命名空间:

(1) fromsystem : 在这里我们定义,在系统命名空间中以组织"apache"定义的项目被转换 为目的地命名空间中使用模块名为组织的项目,无论修订版本是什么.例如,系统命名空间中的项目 apache#commons-lang;1.0奖被转换为maven2解析器命名空间中的commons-lang#commons-lang;1.0。

(2) tosystem : 在这里我们定义反向映射,换言之从maven2仓库转换apache项目到系统命名空间的 apache项目。这里使用的规则告诉说所有组织名匹配commons-.+ (把它看成java正则表达式)项目被转换 为组织是apache而模块名还是原来的项目。同样的规则被使用到其他apache项目例如ant等等。

注意正则表达式的用法:为了识别在组织,模块和修订版本中找到的正则表达式, 使用的表示法用字 母''o'', ''m'' 和''r''作为匹配的正则表达式的前缀。

$o0 : 在组织属性中完全匹配的值

$o1 : 在组织 属性中标记的第一个匹配的语法分组

...

同样应用在模块中: $m0, $m1, ...

也用于修订版本 : $r0, $r1, ...

好了,现在你知道命名空间背后的想法了,现在你可以检查例子中提供的整个命名空间的设置,并使 用命名空间测试模块和它

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号