- 浏览: 581575 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (188)
- java (14)
- web (14)
- web service (3)
- 杂谈 (14)
- Version Control (13)
- software test (30)
- linux (17)
- database (3)
- distributed storage and computing (1)
- ejb (7)
- project building (46)
- spring & IOC (2)
- Thread (2)
- xml (2)
- tool software (0)
- [网站分类]1.网站首页原创Java技术区(对首页文章的要求: 原创、高质量、经过认真思考并精心写作。BlogJava管理团队会对首页的文章进行管理。) (0)
- project manager (9)
- OSGI (1)
- nosql (3)
最新评论
-
sp42:
好搞笑
你懂不懂xml! (2) -
cherishmmo2004:
感觉你们都很牛掰,我们做的一个运维平台也是用karaf的,用k ...
基于osgi开发大型的企业应用 -
liubey:
“自作聪明”的使用了读写锁,其实只使用ReentrantLoc ...
编码最佳实践(4)--小心LinkedHashMap的get()方法 -
liubey:
你这个代码是sublist后仍然一直持有这个sub的引用,一般 ...
编码最佳实践(5)--小心!这只是冰山一角 -
xiegqooo:
初学maven(5)-使用assembly plugin实现自定义打包
现在你已经看到从一个已经存在的仓库创建你自己的仓库是如何的简单,你可能会想知道如何处理更加复杂的情况,例如当源仓库和目的地仓库不遵循相同的命名约定。
1) 通往专业仓库之路
我们将学习这个如何构建一个专业仓库的章节。什么是专业仓库?我们的观点是一个良好质量的仓库必须遵循有关项目命名的清晰的规则,并必须提供正确,可用,可配置和验证过的项目描述符。为了达到这些目标,我们认为你必须构建你自己的仓库。
在前面的例子里面我们已经看到,我们可以使用一些公共仓库看来开始构建我们自己的仓库。然而,结果并不总是那么理想, 尤其是关系到使用的命名规则。
当你有一个已经存在的仓库并且希望从大量的不遵循相同的命名转换的公共仓库中获益时,这个问题非常常见。或者仅仅是因为你发现你作为基础使用的仓库不够一直- 为什么所有的apache commons模块不适用org.apache.commons 组织? 历史原因。但是如果你安装你自己的仓库,你可能不想从历史中蒙受损失。
幸运的是,对于这种问题ivy有一种非常强大的答复:namespaces.
2) 使用命名空间
当你查看前面教程构建的仓库时,你将清晰的看到我们正在谈论的东西:所有apache commons模块使用它们自己的名字作为组织。
因此让我们看一下通过使用namespaces ivy可以做什么(稍后我们将深入细节):
Buildfile: build.xml
load-ivy:
init-ivy:
maven2-namespace:
[ivy:install] :: loading settings :: url = jar:file://home/xavier/.ivy2/jars/ivy.jar!/org/apache/ivy/core/settings/ivysettings.xml
[ivy:install] :: Ivy 2.0.0-beta1-local-20071130005044 - 20071130005044 :: http://ant.apache.org/ivy/ ::
:: loading settings :: file = /home/xavier/ivy/settings/ivysettings-advanced.xml
[ivy:install] :: installing apache#commons-lang;1.0 ::
[ivy:install] :: resolving dependencies ::
[ivy:install] found apache#commons-lang;1.0 in libraries
[ivy:install] :: downloading artifacts to cache ::
[ivy:install] downloading http://repo1.maven.org/maven2/commons-lang/commons-lang/1.0/commons-lang-1.0.jar ...
[ivy:install] ........ (62kB)
[ivy:install] .. (0kB)
[ivy:install] [SUCCESSFUL ] apache#commons-lang;1.0/commons-lang.jar[jar] (1612ms)
[ivy:install] :: installing in my-repository ::
[ivy:install] published commons-lang to /home/xavier/ivy/myrepository/advanced/apache/commons-lang/jars/commons-lang-1.0.jar
[ivy:install] published ivy to /home/xavier/ivy/myrepository/advanced/apache/commons-lang/ivys/ivy-1.0.xml
[ivy:install] :: install resolution report ::
---------------------------------------------------------------------
| | modules || artifacts |
| conf | number| search|dwnlded|evicted|| number|dwnlded|
---------------------------------------------------------------------
| default | 1 | 1 | 0 | 0 || 1 | 1 |
---------------------------------------------------------------------
BUILD SUCCESSFUL
Total time: 3 seconds
现在我们看一下我们的仓库,它看上去很好。
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文件:
< 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参数。
root ="${ibiblio-maven2-root}"
m2compatible ="true"
namespace ="maven2"
/>
namespace由一系列规则定义而成。这些规则基于正则表达式,并告诉ivy如何从仓库命名空间转换数据到系统命名空间,换言之,ivy时常运行的命名空间(例如ivy 缓存通常使用系统命名空间).
对于我们调用maven2的命名空间,我们已经定义了一些规则,这里是一个:
处理导入apache maven1项目的规则
< 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 >
理解命名空间:
(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等等。
$o0 : 在组织属性中完全匹配的值
$o1 : 在组织属性中标记的第一个匹配的语法分组
...
同样应用在模块中: $m0, $m1, ...
也用于修订版本 : $r0, $r1, ...
好了,现在你知道命名空间背后的想法了,现在你可以检查例子中提供的整个命名空间的设置,并使用命名空间测试模块和它的依赖的安装。
运行
然后你将看到结果仓库比我们第一次构件的清晰了。
从我们的经验来看,创建命名空间的花费是值得的,如果你经常需要在你自己的仓库中,这里命名规则已经存在或者更加严格,为第三方类库增加新的模块或者修订版本。
发表评论
-
搜索maven依赖的网站推荐
2011-12-02 16:04 4304使用maven填写依赖的时候,常会遇到需要查一下gro ... -
hudson中subversion HEAD check out 的问题及疑惑
2010-09-30 10:56 40近期发现一个问题,hudson执行任务时,经常不能获取 ... -
你走你的阳光道,我走我的独木桥:整合ant ivy 和testng
2010-05-31 16:11 2069近期自己折腾自己,放着正统的maven + jun ... -
slf4j1.6.0-RC0和logback的0.9.20版本不兼容
2010-04-26 08:54 3508今天,尝试使用slf4j + logback的黄金组合,结果发 ... -
fisheye2.2.1 & Crucible 2.2.1 安装配置笔记
2010-04-27 16:48 31761) 下载 从atlassian网站 ... -
让ivy支持maven的classifier属性
2009-10-15 01:56 3178在maven中,对于一个依赖,除了groupId,ar ... -
ivy教程(1)-目录
2009-09-21 23:57 2939学习的最佳方式是实践!这是ivy教程将帮助你做到的 ... -
ivy教程(2)-快速开始
2009-09-22 11:48 3050在这个例子中,我们将看到使用ivy的一个最简单的方 ... -
ivy教程(3)-调整默认设置
2009-09-24 20:58 2344ivy绑定一些默认 ... -
ivy教程(4)-多解析器
2009-09-25 15:28 1789这个例子演示模块是如何被多解析器获得的。使用多解析 ... -
ivy教程(5)-双重解析器
2009-09-27 20:58 1709在一些情况下,会发生这样的事情:你的模块描述符(ivy ... -
ivy教程(6)-项目依赖
2009-09-29 23:32 2998这个示例将举例说明在两个项目之间的依赖。 depen ... -
ivy教程(7)-在多项目环境下使用ivy
2009-10-03 11:48 2361在上一个教程中,你已 ... -
ivy教程(8)-使用ivy模块配置
2009-10-04 10:15 2658这个教程介绍ivy文件中的模块配置的使用。ivy模块配置事实上 ... -
ivy教程(9)-架设仓库(1)-介绍
2009-10-04 13:42 1846install任务让你从一个仓库复制一个模块或者模 ... -
ivy教程(10)-架设仓库(2)-基础仓库复制
2009-10-04 15:04 3048在这个步骤中我们使用install任务来从mave ... -
ivy教程(12)-更多例子
2009-10-09 21:29 1814如果你已经成功的跟随并理解了所有的教程,可能你还是需要得到更好 ... -
ivy中文参考文档(21)-ant任务(9)-post resolve tasks
2009-09-15 14:17 14631) post resolve tasks ... -
ivy中文参考文档(20)-ant任务(8)-cachefileset
2009-09-03 23:11 13881) cachefileset 为配置构建一个有iv ... -
ivy中文参考文档(18)-ant任务(6)-deliver
2009-08-31 22:22 14571) deliver 交付当前模块的解析好的描述符, ...
相关推荐
该软件包中包含apache-ivy-2.5.0-rc1-bin.tar.gz部署安装包、apache-ivy-2.5.0-rc1-bin-with-deps.zip依赖包、apache-ivy-2.5.0-rc1-src.zip源码。
3. `docs`目录:可能包含Ivy的用户手册和API文档,帮助开发者理解和使用Ivy。 4. `bin`目录:可能包含可执行脚本,如启动Ivy的命令行工具。 5. `conf`目录:可能包含默认的配置文件,如ivysettings.xml,用于定义...
赠送jar包:ivy-2.4.0.jar; 赠送原API文档:ivy-2.4.0-javadoc.jar; 赠送源代码:ivy-2.4.0-sources.jar; 赠送Maven依赖信息文件:ivy-2.4.0.pom; 包含翻译后的API文档:ivy-2.4.0-javadoc-API文档-中文(简体)版...
赠送jar包:ivy-2.4.0.jar; 赠送原API文档:ivy-2.4.0-javadoc.jar; 赠送源代码:ivy-2.4.0-sources.jar; 赠送Maven依赖信息文件:ivy-2.4.0.pom; 包含翻译后的API文档:ivy-2.4.0-javadoc-API文档-中文(简体)-...
3. **lib**:包含Ivy运行时所需的库文件。 4. **src**:如果包含源码,这个目录下会有Ivy的所有源代码文件,按照模块结构划分。 5. **conf**:可能包含默认的Ivy配置文件,如`ivysettings.xml`,这是配置Ivy行为和...
PyPI(Python Package Index)是Python开发者广泛使用的软件包仓库,它为全球的Python社区提供了一个集中的平台,用于分享、发布和下载Python库。在这个环境中,我们发现了名为"Ivy-Demo-Utils"的Python库,其版本号...
在使用Ivy时,开发者需要注意正确配置Ivy设置,包括仓库位置、依赖版本以及传递性依赖的管理策略。同时,理解如何将Ivy与Ant等构建工具结合使用,也是提高开发流程的重要一环。通过合理利用Ivy,可以简化项目构建和...
3. **文档**:虽然这里可能没有完整的用户文档,但可能会有README文件或其他文档,解释如何构建和使用Ivy的源代码。 4. **测试用例**:在 `src/test` 目录下,可以看到Ivy的单元测试和集成测试,这些测试用例有助于...
3. `lib`目录:可能包含Ivy运行所需的其他库文件。 4. `conf`目录:可能包含Ivy的配置文件,如`ivysettings.xml`,用于配置仓库、分辨率策略等。 5. `examples`目录:提供了一些示例,展示如何在实际项目中使用Ivy。...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
3. **docs**目录:可能会包含Ivy的用户手册、API文档和其他帮助材料,对于理解和使用Ivy非常有帮助。 4. **conf**目录:可能包含Ivy的配置文件,如`ivysettings.xml`,用于定义仓库位置、代理设置等。 5. **bin**...
**Python库ms_ivy-1.8.4-py2-none-manylinux1_x86_64.whl详解** 在Python编程中,库扮演着至关重要的角色,它们提供了丰富的功能和模块,帮助开发者高效地完成各种任务。`ms_ivy`是一个这样的库,它的版本为1.8.4,...
资源分类:Python库 所属语言:Python 资源全名:ivy-demo-utils-1.1.1.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
8. **发布功能**:除了管理项目依赖,Ivy还可以帮助发布项目到远程仓库,供其他项目使用。 通过学习和使用Apache Ivy,开发者可以更有效地管理项目依赖,提高开发效率,保证构建的一致性和可重复性。对于大型项目...
2. **仓库支持**:Ivy可以连接到多种类型的仓库,如Maven中央仓库、 Ivy自身的仓库、公司内部的Nexus或Artifactory等,检索项目所需的依赖。 3. **解析依赖**:Ivy会自动解析和解决项目中所有直接和间接依赖的关系...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
资源来自pypi官网。 资源全名:ms_ivy-1.8.4-py2-none-manylinux1_x86_64.whl
资源分类:Python库 所属语言:Python 资源全名:ivy-phylo-20120228.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
资源分类:Python库 所属语言:Python 使用前提:需要解压 资源全名:ms_ivy-1.8.17-py2-none-manylinux1_x86_64.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059