- 浏览: 581838 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (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绑定一些默认设置,这使得在通常环境下使用ivy很容易。这个教程,接近于参考文档,解释这些默认设置是什么和他们怎样调整来满足你的需要。
为了完整的理解设置的概念和你可以用它们做什么,我们建议阅读其他和设置相关的教程(如Multiple Resolvers
和 Dual Resolver
)或者设置文件
的参考文档。
1) 概念
默认设置主要是3种仓库组成:
* local / 私有
用户私有的仓库
* shared / 共享
在团队的所有成员之间共享的仓库。
* public / 公共
可以找到大部分模块,尤其是第三方模块的公共仓库.
注意如果你独自工作,local和shared仓库之间的差异不重要,但是需要知道如何识别它们。
现在让我们更详细的描述这些仓库概念的每一个。后面我们会描述如何实际配置它们。
1. local / 私有
当你想做一些事情而不希望被环境中发生的其他任何事情打扰时,私有仓库非常有用。这意味着每当ivy能够在这个仓库中找到模块时,这个模块将被使用,不管其他仓库里的是什么。
举例,如果你有一个模块,声明依赖于模块foo的latest.integration修订版本,然后当foo的一个修订版本在私有仓库中被发现,这个版本将被使用,即使在其他仓库中有一个更新的修订版本可用。
这可能让你们中的某些人困惑,但是想象你不得不在一个项目中实现一个新的特性,并且为了达到这个目标你需要修改两个模块:你在模块foo内增加一个新的方法,并在模块bar中利用。然后如果你公布模块foo到你的私有仓库,你可以保证在你的bar模块中得到它,即使有其他人在shared仓库中公布了foo的一个新的修订版本。
但是小心,当你完成你的开发并且公布它到共享仓库时,你将不得不清理你的本地仓库以便从在共享仓库中公布的新版本中获益。
同样注意,在本地仓库中找到的模块必须是完整的,换句话说,他们必须同时提供模块描述符和发行的制品。
2. shared / 共享
如它的名字建议的,共享仓库的目标是在整个开发团队中共享。例如你可以公布你的团队的私有模块,同样你可以放置一些在公共仓库中不能得到的模块(例如sun的jar文件),或者仅仅是不精确(例如坏的或者不完整的模块描述符).
注意模块可以在共享仓库和公共仓库中分隔:例如你可以在共享仓库中有模块的描述符而制品在公共仓库中。
3. public / 公共
大多数模块可以在公共仓库中找到,但是某些时候缺少你要的信息。这通常是一个只能通过internet连接访问的仓库,虽然这不是强制。
2) 安装仓库
现在我们已经看到三个仓库中的每一个的目标,让我们看怎样安装他们并配置以便满足你的需求。
首先,几个仓库在你的文件系统中使用同一个root。被作为${ivy.default.ivy.user.dir}引用,默认为在你的user home下的.ivy2 目录。
注意几个东西可以通过设置ivy变量来完成。为了不定义你自己的ivysettings.xml文件而设置他们,你可以:
* 在任何ivy调用前,在你的构建文件中设置一个ant属性,如果你通过ant使用ivy
* 设置一个环境变量,如果你通过命令行使用ivy
举例:
< property name ="ivy.default.ivy.user.dir" value ="/path/to/ivy/user/dir" />
< ivy:resolve />
</ target >
现在我们将展示如何为不同类型的仓库覆盖默认值,注意你可以在下面的默认设置的细节中发现这些默认值是什么。
1. Local
默认,本地仓库位于${ivy.default.ivy.user.dir}/local.这通常是一个不错的地方,但是如论如何你可能需要修改它。没有问题,你只需要设置下面的ivy变量到你想使用的目录:
例如:
如果你已经有了一些你想作为你的本地仓库来使用的东西,你可能同样想修改这个仓库的布局。再一次,有两个变量可用于此:
给出查找ivy文件的样式
给出查找制品的样式
例如:
ivy.local.default.ivy.pattern=[module]/[revision]/ivy.xml
ivy.local.default.artifact.pattern=[module]/[revision]/[artifact].[ext]
2. Shared
默认,本地仓库位于${ivy.default.ivy.user.dir}/shared.如果你独自工作没有问题,但是共享仓库是用来共享的!因此经常需要修改这个目录,并且它通常修改为指向一个网络共享目录。你可以使用:
变量来制定一个新的目录。此外,你也可以通过和本地仓库类似的变量来配置布局。
给出查找ivy文件的样式
给出查找制品的样式
例如:
ivy.shared.default.ivy.pattern=[organisation]/[module]/[revision]/ivy.xml
ivy.shared.default.artifact.pattern=[organisation]/[module]/[revision]/[artifact].[ext]
3. Public
默认,公共仓库是出于m2 兼容模式下的ibiblio(换句话说,maven2的公共仓库).
这个仓库的优势在于提供了很多模块并且大部分的模块都有metadata。matadata的质量不是都很完美,但是它是一个好的开始:使用类似ivy这样的工具并从间接依赖管理的能力中获益。
尽管ivy容易使用,我们建议阅读最佳实践来理解使用公共的、无法管理的仓库的正面和负面。
在1.4版本中ivy使用ivyrep作为默认的解析器,如果你想恢复成这个方式,可以设置ivy.14.compatible=true 作为一个ant属性。
3) 走的更远
好,我们已经看到修改这三个主要仓库的设置是很容易的。但是在web服务器上我的共享仓库是什么?如果你不想使用maven2 仓库作为公共的仓库。或者其他...
没有问题,ivy富有弹性并且可以用非常特殊的设置进行配置以满足你的需要和环境。但是在考虑你自己的设置前,我们建议阅读后面的内容,你将要学习如何修改默认设置的一部分并调整其他。
但是在解析如何做之前,你需要对ivy默认是如何配置的有一个简短的概述。
默认,ivy使用被打包在ivy的jar包中的ivysettings.xml来配置。这里是设置文件:
< settings defaultResolver ="default" />
< include url ="${ivy.default.settings.dir}/ivysettings-public.xml" />
< include url ="${ivy.default.settings.dir}/ivysettings-shared.xml" />
< include url ="${ivy.default.settings.dir}/ivysettings-local.xml" />
< include url ="${ivy.default.settings.dir}/ivysettings-main-chain.xml" />
< include url ="${ivy.default.settings.dir}/ivysettings-default-chain.xml" />
</ ivysettings >
好,这里没有太多的信息,除了一些包含。这些包含的目的是你能够容易的仅仅修改ivysettings的一部分而直接使用其他。例如,如果你想定义你自己的公共解析器,你将只需要像这样通过ivysettings来配置ivy:
< settings defaultResolver ="default" />
< include url ="http://myserver/ivy/myivysettings-public.xml" />
< include url ="${ivy.default.settings.dir}/ivysettings-shared.xml" />
< include url ="${ivy.default.settings.dir}/ivysettings-local.xml" />
< include url ="${ivy.default.settings.dir}/ivysettings-main-chain.xml" />
< include url ="${ivy.default.settings.dir}/ivysettings-default-chain.xml" />
</ ivysettings >
注意仅仅是ivysettings-public包含被修改为包含自产的公共解析器。注意同样可以像这样使用,感谢${ivy.default.settings.dir} 是一个变量的事实,这个变量经常设置为ivy默认设置文件所在的地方(换句话说,被打包在jar中)。为了完成这个例子,你必须写你自己的ivysettings文件(那样你在这里例子中你将使得http://myserver/ivy/myivysettings-public.xml可用)来定义你自己的公共解析器。例如:
< resolvers >
< filesystem name ="public" >
< ivy pattern ="/path/to/my/public/rep/[organisation]/[module]/ivy-[revision].xml" />
< artifact pattern ="/path/to/my/public/rep/[organisation]/[module]/[artifact]-[revision].[ext]" />
</ filesystem >
</ resolvers >
</ ivysettings >
现在为了正确地从默认设置中获益,你需要做的最后一件事情是每个包含的ivysettings文件的内容:
ivysettings-public.xml
< resolvers >
< ibiblio name ="public" m2compatible ="true" />
</ resolvers >
</ ivysettings >
ivysettings-shared.xml
< property name ="ivy.shared.default.root" value ="${ivy.default.ivy.user.dir}/shared" override ="false" />
< property name ="ivy.shared.default.ivy.pattern" value ="[organisation]/[module]/[revision]/[type]s/[artifact].[ext]" override ="false" />
< property name ="ivy.shared.default.artifact.pattern" value ="[organisation]/[module]/[revision]/[type]s/[artifact].[ext]" override ="false" />
< resolvers >
< filesystem name ="shared" >
< ivy pattern ="${ivy.shared.default.root}/${ivy.shared.default.ivy.pattern}" />
< artifact pattern ="${ivy.shared.default.root}/${ivy.shared.default.artifact.pattern}" />
</ filesystem >
</ resolvers >
</ ivysettings >
ivysettings-local.xml
< property name ="ivy.local.default.root" value ="${ivy.default.ivy.user.dir}/local" override ="false" />
< property name ="ivy.local.default.ivy.pattern" value ="[organisation]/[module]/[revision]/[type]s/[artifact].[ext]" override ="false" />
< property name ="ivy.local.default.artifact.pattern" value ="[organisation]/[module]/[revision]/[type]s/[artifact].[ext]" override ="false" />
< resolvers >
< filesystem name ="local" >
< ivy pattern ="${ivy.local.default.root}/${ivy.local.default.ivy.pattern}" />
< artifact pattern ="${ivy.local.default.root}/${ivy.local.default.artifact.pattern}" />
</ filesystem >
</ resolvers >
</ ivysettings >
ivysettings-main-chain.xml
< resolvers >
< chain name ="main" dual ="true" >
< resolver ref ="shared" />
< resolver ref ="public" />
</ chain >
</ resolvers >
</ ivysettings >
ivysettings-default-chain.xml
< resolvers >
< chain name ="default" returnFirst ="true" >
< resolver ref ="local" />
< resolver ref ="main" />
</ chain >
</ resolvers >
</ ivysettings >
在这里,你有足够的提示来配置你想要的方式...查阅设置文档
来看你想要做的是不是可能,并继续前行!
发表评论
-
搜索maven依赖的网站推荐
2011-12-02 16:04 4306使用maven填写依赖的时候,常会遇到需要查一下gro ... -
hudson中subversion HEAD check out 的问题及疑惑
2010-09-30 10:56 40近期发现一个问题,hudson执行任务时,经常不能获取 ... -
你走你的阳光道,我走我的独木桥:整合ant ivy 和testng
2010-05-31 16:11 2071近期自己折腾自己,放着正统的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 31781) 下载 从atlassian网站 ... -
让ivy支持maven的classifier属性
2009-10-15 01:56 3180在maven中,对于一个依赖,除了groupId,ar ... -
ivy教程(1)-目录
2009-09-21 23:57 2941学习的最佳方式是实践!这是ivy教程将帮助你做到的 ... -
ivy教程(2)-快速开始
2009-09-22 11:48 3052在这个例子中,我们将看到使用ivy的一个最简单的方 ... -
ivy教程(4)-多解析器
2009-09-25 15:28 1790这个例子演示模块是如何被多解析器获得的。使用多解析 ... -
ivy教程(5)-双重解析器
2009-09-27 20:58 1713在一些情况下,会发生这样的事情:你的模块描述符(ivy ... -
ivy教程(6)-项目依赖
2009-09-29 23:32 3000这个示例将举例说明在两个项目之间的依赖。 depen ... -
ivy教程(7)-在多项目环境下使用ivy
2009-10-03 11:48 2361在上一个教程中,你已 ... -
ivy教程(8)-使用ivy模块配置
2009-10-04 10:15 2660这个教程介绍ivy文件中的模块配置的使用。ivy模块配置事实上 ... -
ivy教程(9)-架设仓库(1)-介绍
2009-10-04 13:42 1846install任务让你从一个仓库复制一个模块或者模 ... -
ivy教程(10)-架设仓库(2)-基础仓库复制
2009-10-04 15:04 3050在这个步骤中我们使用install任务来从mave ... -
ivy教程(11)-架设仓库(3)-使用命名空间
2009-10-09 21:04 2251现在你已经看到从一个已经存在的仓库创建你自己的仓库是如何的简单 ... -
ivy教程(12)-更多例子
2009-10-09 21:29 1815如果你已经成功的跟随并理解了所有的教程,可能你还是需要得到更好 ... -
ivy中文参考文档(21)-ant任务(9)-post resolve tasks
2009-09-15 14:17 14641) post resolve tasks ... -
ivy中文参考文档(20)-ant任务(8)-cachefileset
2009-09-03 23:11 13891) 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文档-中文(简体)版...
3. 更新PATH:`echo 'export PATH=$PATH:/usr/local/apache-ivy-2.3.0/bin' >> ~/.bashrc && source ~/.bashrc` 安装Ant是使用Ivy的前提,因为Ivy通常作为Ant的任务来运行。Ant是一个流行的Java项目构建工具,它...
赠送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.zip"是一个包含Apache Ivy 2.3.0发行版的压缩包,通常它会包含Ivy的二进制文件、文档、示例和配置文件等。这个版本的Ivy可以用于安装和配置,以帮助管理你的Java项目中的依赖。...
《PyPI官网下载 Ivy-Demo-Utils:一个Python库的深度探索》 PyPI(Python Package Index)是Python开发者广泛使用的软件包仓库,它为全球的Python社区提供了一个集中的平台,用于分享、发布和下载Python库。在这个...
这个"apache-ivy-2.4.0-rc1-bin.zip_ivy"文件是Apache Ivy的2.4.0-rc1版本的二进制发行版,包含了运行Ivy所需的所有文件。Ivy在项目构建过程中扮演了类似于Maven的角色,但它的集成更加灵活,可以与Ant等构建工具...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
在 "apache-ivy-2.0.0-beta1-src.zip" 这个压缩包中,我们可以期待找到以下关键组件和文件: 1. **源代码目录**:Ivy 的所有源代码,通常按照模块或功能组织,这有助于理解其内部工作原理。开发者可以深入查看 `src...
在"apache-ivy-2-5-0.rar"这个压缩包中,包含了Apache Ivy 2.5.0版本的所有组件和文档。 Ivy的核心概念是依赖解析,它允许开发者声明项目所依赖的库,并自动下载这些库及其依赖,避免了手动管理JAR文件的繁琐工作。...
资源分类:Python库 所属语言:Python 资源全名:ivy-demo-utils-1.1.1.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
在"apache-ivy-2.3.0-rc2-bin.zip"这个压缩包中,你可以期待找到以下内容: 1. **ivy.jar**:这是Apache Ivy的主要运行时库,包含了处理依赖管理的所有核心功能。 2. **lib**目录:这个目录可能包含Ivy运行所需要的...
**Python库ms_ivy-1.8.4-py2-none-manylinux1_x86_64.whl详解** 在Python编程中,库扮演着至关重要的角色,它们提供了丰富的功能和模块,帮助开发者高效地完成各种任务。`ms_ivy`是一个这样的库,它的版本为1.8.4,...
压缩包子文件的文件名"apache-ivy-2.2.0"很可能包含了Ivy的完整发布内容,如`ivy.jar`(Ivy的主要可执行文件)、文档、示例和可能的配置文件等。这些内容可以帮助用户快速理解和使用Apache Ivy。 Apache Ivy的核心...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
在 "apache-ivy-2.3.0.rar" 压缩包中,我们可能找到了Ivy 2.3.0版本的完整发布内容。这个版本包含了Ivy的核心库、文档、示例以及其他相关资源。以下是一些关于Apache Ivy的重要知识点: 1. **依赖管理**:Ivy允许...
资源来自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