- 浏览: 581635 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (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实现自定义打包
在一些情况下,会发生这样的事情:你的模块描述符(ivy文件,maven pom, ...)被放置在一个地方,而模块的制品(jars,...)在另外一个地方。
双重解析器用于满足这种类型的需求,而这个教程将展示如何使用它。
1) 项目描述
让我们看一下你的ivy发行包里面的src/example/dual目录.
它包含一个构建文件和3个目录:
* settings: b包含ivy设置文件
* repository: ivy文件的示例仓库
* project: 利用ivy双重解析器的项目
1. dual项目
项目非常简单,只包含一个简单的类: example.Hello
它依赖两个类库: Apache commons-lang 和 Apache commons-httpclient.
这里是项目的内容:
* build.xml: 项目的ant构建文件
* ivy.xml: ivy项目文件
* src\example\Hello.java: 项目仅有的一个类
让我们看一下ivy.xml文件:
< info organisation ="org.apache" module ="hello-ivy" />
< dependencies >
< dependency org ="commons-httpclient" name ="commons-httpclient" rev ="2.0.2" />
< dependency org ="commons-lang" name ="commons-lang" rev ="2.0" />
</ dependencies >
</ ivy-module >
如你所见,这里没有任何特殊的东西...实际上,这就是ivy的原理: 保持ivy文件独立于依赖解析的方式。
2. ivy设置
ivy设置在settings目录中;它只包含一个文件: ivysettings.xml.
< settings defaultResolver ="dual-example" />
< resolvers >
< dual name ="dual-example" >
< filesystem name ="ivys" >
< ivy pattern ="${ivy.settings.dir}/../repository/[module]-ivy-[revision].xml" />
</ filesystem >
< ibiblio name ="ibiblio" m2compatible ="true" usepoms ="false" />
</ dual >
</ resolvers >
</ ivysettings >
这里我们配置了一个解析器,默认的,它是一个双重解析器。这个双重解析器有两个子解析器:第一个被称为是双重解析器的"ivy"或"metadata"解析器,而第二个被称为"artifact" 解析器。重要的是双重解析器必须严格的拥有两个遵循这个给定顺序的解析器。
metadata解析器,这里是一个文件解析器,仅仅用于查找模块的描述符,在这个案例中是ivy文件。这个解析器给出的设置阐述说所有ivy文件都在同一个目录中,命名形如[module]-ivy-[revision].xml.如果我们检查仓库目录,我们可以确认它包含一个名为commons-httpclient-ivy-2.0.2.xml的文件。它满足给定的模式并将因此被这个解析器找到。
artifact解析器就是一个ibiblio 解析器,配置为m2compatible 模式以便使用maven2仓库,属性 usepoms="false" 确保它不会使用maven2 metadata。注意,这并不是严格要求,因为在双重解析器中的第二个解析器(artifact解析器)本来就不会被要求查找模块metadata。
2) walkthrough
step 1 : 准备
打开一个dos或者shell窗口,并进去"dual"目录
step 2 : 清理
在提示符下: ant
这将清理整个项目目录树(已编译的类和获得的libs)和ivy缓存。
你可以再每次你想清理这个例子时做这个事情。
step 3 : 运行项目
进入projuect目录,并简单运行ant
Buildfile: src\example\dual\project\build.xml
resolve:
[ivy:retrieve] :: Ivy 2.0.0-beta1-local-20071104204849 - 20071104204849 :: http://ant.apache.org/ivy/ ::
[ivy:retrieve] :: loading settings :: file = C:\dev\data\opensource_workspace\ivy\src\example\dual\config\ivysettings.xml
[ivy:retrieve] :: resolving dependencies :: [ org.apache | hello-ivy | working@BEN-ScokartG ]
[ivy:retrieve] confs: [default]
[ivy:retrieve] found [ commons-httpclient | commons-httpclient | 2.0.2 ] in ivys
[ivy:retrieve] found [ commons-httpclient | commons-logging | 1.0.4 ] in ibiblio
[ivy:retrieve] found [ commons-lang | commons-lang | 2.0 ] in ibiblio
[ivy:retrieve] downloading http://www.ibiblio.org/maven/commons-httpclient/jars/commons-httpclient-2.0.2.jar ...
[ivy:retrieve] ............................ ............................
[ivy:retrieve] ............................ ............................
[ivy:retrieve] ... ... ... ... (220kB)
[ivy:retrieve] .. (0kB)
[ivy:retrieve] [SUCCESSFUL ] [ commons-httpclient | commons-httpclient | 2.0.2 ]/commons-httpclient.jar[jar] (11676ms)
[ivy:retrieve] downloading http://www.ibiblio.org/maven/commons-lang/jars/commons-lang-2.0.jar ...
[ivy:retrieve] ............................ ............................
[ivy:retrieve] ............................ (165kB)
[ivy:retrieve] .. (0kB)
[ivy:retrieve] [SUCCESSFUL ] [ commons-lang | commons-lang | 2.0 ]/commons-lang.jar[jar] (7651ms)
[ivy:retrieve] downloading http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.4.jar ...
[ivy:retrieve] ............................ (37kB)
[ivy:retrieve] .. (0kB)
[ivy:retrieve] [SUCCESSFUL ] [ commons-httpclient | commons-logging | 1.0.4 ]/commons-logging.jar[jar] (9724ms)
[ivy:retrieve] :: resolution report ::
---------------------------------------------------------------------
| | modules || artifacts |
| conf | number| search|dwnlded|evicted|| number|dwnlded|
---------------------------------------------------------------------
| default | 3 | 3 | 0 | 0 || 3 | 3 |
---------------------------------------------------------------------
[ivy:retrieve] :: retrieving :: [ org.apache | hello-ivy ]
[ivy:retrieve] confs: [default]
[ivy:retrieve] 3 artifacts copied, 0 already retrieved
run:
[mkdir] Created dir: C:\dev\data\opensource_workspace\ivy\src\example\dual\project\build
[javac] Compiling 1 source file to C:\dev\data\opensource_workspace\ivy\src\example\dual\project\build
[java] standard message : hello ivy !
[java] capitalized by org.apache.commons.lang.WordUtils : Hello Ivy !
[java] head status code with httpclient: 200
[java] now check if httpclient dependency on commons-logging has been realized
[java] found logging class in classpath: interface org.apache.commons.logging.Log
BUILD SUCCESSFUL
Total time: 37 seconds
你可以看到,ivy不仅仅下载commons-lang 和commons-httpclient,而且还有commons-logging.实际上,commons-logging是httpclient的依赖,我们可以看到在仓库目录中找到的httpclient 的ivy文件.
< info
organisation ="commons-httpclient"
module ="commons-httpclient"
revision ="2.0.2"
status ="release"
publication ="20041010174300" />
< dependencies >
< dependency org ="commons-logging" name ="commons-logging" rev ="1.0.4" conf ="default" />
</ dependencies >
</ ivy-module >
想这样每个东西都工作的很好,ivy文件在仓库目录下被找到而制品从ibiblio下载。
这种类型的配置在你不想依赖maven2仓库的metadata或者你想为一些或者全部模块完全利用ivy文件时有用。
有关双重解析器的完整的解析,请查阅对应的参考文档。
发表评论
-
搜索maven依赖的网站推荐
2011-12-02 16:04 4305使用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 31771) 下载 从atlassian网站 ... -
让ivy支持maven的classifier属性
2009-10-15 01:56 3179在maven中,对于一个依赖,除了groupId,ar ... -
ivy教程(1)-目录
2009-09-21 23:57 2940学习的最佳方式是实践!这是ivy教程将帮助你做到的 ... -
ivy教程(2)-快速开始
2009-09-22 11:48 3051在这个例子中,我们将看到使用ivy的一个最简单的方 ... -
ivy教程(3)-调整默认设置
2009-09-24 20:58 2345ivy绑定一些默认 ... -
ivy教程(4)-多解析器
2009-09-25 15:28 1789这个例子演示模块是如何被多解析器获得的。使用多解析 ... -
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 2659这个教程介绍ivy文件中的模块配置的使用。ivy模块配置事实上 ... -
ivy教程(9)-架设仓库(1)-介绍
2009-10-04 13:42 1846install任务让你从一个仓库复制一个模块或者模 ... -
ivy教程(10)-架设仓库(2)-基础仓库复制
2009-10-04 15:04 3049在这个步骤中我们使用install任务来从mave ... -
ivy教程(11)-架设仓库(3)-使用命名空间
2009-10-09 21:04 2250现在你已经看到从一个已经存在的仓库创建你自己的仓库是如何的简单 ... -
ivy教程(12)-更多例子
2009-10-09 21:29 1815如果你已经成功的跟随并理解了所有的教程,可能你还是需要得到更好 ... -
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 14581) 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源码。
赠送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文档-中文(简体)版...
在"apache-ivy-2.3.0-bin.tar.gz"这个压缩包中,包含了Apache Ivy 2.3.0版本的所有文件,供用户在Ubuntu系统中使用。 首先,让我们深入了解Ivy的工作原理。Ivy基于XML的配置文件(通常命名为ivy.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文档-中文(简体)-...
在"apache-ivy-2-5-0.rar"这个压缩包中,包含了Apache Ivy 2.5.0版本的所有组件和文档。 Ivy的核心概念是依赖解析,它允许开发者声明项目所依赖的库,并自动下载这些库及其依赖,避免了手动管理JAR文件的繁琐工作。...
在描述中提到的"apache-ivy-2.3.0-bin.zip"是一个包含Apache Ivy 2.3.0发行版的压缩包,通常它会包含Ivy的二进制文件、文档、示例和配置文件等。这个版本的Ivy可以用于安装和配置,以帮助管理你的Java项目中的依赖。...
《PyPI官网下载 Ivy-Demo-Utils:一个Python库的深度探索》 PyPI(Python Package Index)是Python开发者广泛使用的软件包仓库,它为全球的Python社区提供了一个集中的平台,用于分享、发布和下载Python库。在这个...
在 "apache-ivy-2.0.0-beta1-src.zip" 这个压缩包中,我们可以期待找到以下关键组件和文件: 1. **源代码目录**:Ivy 的所有源代码,通常按照模块或功能组织,这有助于理解其内部工作原理。开发者可以深入查看 `src...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
这个"apache-ivy-2.4.0-rc1-bin.zip_ivy"文件是Apache Ivy的2.4.0-rc1版本的二进制发行版,包含了运行Ivy所需的所有文件。Ivy在项目构建过程中扮演了类似于Maven的角色,但它的集成更加灵活,可以与Ant等构建工具...
在"apache-ivy-2.3.0-rc2-bin.zip"这个压缩包中,你可以期待找到以下内容: 1. **ivy.jar**:这是Apache Ivy的主要运行时库,包含了处理依赖管理的所有核心功能。 2. **lib**目录:这个目录可能包含Ivy运行所需要的...
资源分类:Python库 所属语言:Python 资源全名:ivy-demo-utils-1.1.1.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
压缩包子文件的文件名"apache-ivy-2.2.0"很可能包含了Ivy的完整发布内容,如`ivy.jar`(Ivy的主要可执行文件)、文档、示例和可能的配置文件等。这些内容可以帮助用户快速理解和使用Apache Ivy。 Apache Ivy的核心...
**Python库ms_ivy-1.8.4-py2-none-manylinux1_x86_64.whl详解** 在Python编程中,库扮演着至关重要的角色,它们提供了丰富的功能和模块,帮助开发者高效地完成各种任务。`ms_ivy`是一个这样的库,它的版本为1.8.4,...
在 "apache-ivy-2.3.0.rar" 压缩包中,我们可能找到了Ivy 2.3.0版本的完整发布内容。这个版本包含了Ivy的核心库、文档、示例以及其他相关资源。以下是一些关于Apache Ivy的重要知识点: 1. **依赖管理**:Ivy允许...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
这个"ivy-jar-sample"是常春藤解析器的一个示例,它提供了如何使用Ivy来管理和构建你的Java项目的实践指导。 常春藤的核心功能是管理项目的依赖关系,它允许你声明项目所需的外部库,并自动下载这些库到本地存储库...
资源来自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