- 浏览: 582747 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (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中,多解析器的使用是通过一个名为解析器链的复合解析器来支持的。
在我们的例子中,我们将简单的展示如何使用两个解析器,一个在本地仓库而另一个使用maven2仓库。
1) 项目描述
1. 项目: chained-resolvers
项目非常简单,只包含一个简单的类: example.Hello.
它依赖两个类库:Apache commons-lang 和一个小的test类库(源文件被包含在jar文件中).test类库被项目使用用于将字符串转换为大写,而commons-lang用来以大些书写同样的字符串。
这是项目的内容:
* build.xml: 项目的ant 构建文件
* ivy.xml: ivy项目文件
* src\example\Hello.java: 项目仅有的一个类
让我们看一下ivy.xm文件:
< info organisation ="org.apache" module ="chained-resolvers" />
< dependencies >
< dependency org ="commons-lang" name ="commons-lang" rev ="2.0" />
< dependency name ="test" rev ="1.0" />
</ dependencies >
</ ivy-module >
和我们期望的一样,ivy文件声明依赖于两个项目使用的依赖:commons-lang 和 test.注意我们没有指定test依赖的组织,在这种情况下ivy假定为和声明的模块同样的组织,换句话说,在这个案例中是org.apache。
2. ivy设置
ivy设置在设置目录中生成,它只包含一个文件: ivysettings.xml.
< settings defaultResolver ="chain-example" />
< resolvers >
< chain name ="chain-example" >
< filesystem name ="libraries" >
< artifact pattern ="${ivy.settings.dir}/repository/[artifact]-[revision].[ext]" />
</ filesystem >
< ibiblio name ="ibiblio" m2compatible ="true" />
</ chain >
</ resolvers >
</ ivysettings >
3. 设置标签
这个标签用一些参数初始化ivy.这里只使用了一个,默认使用的解析器的名称。
4. 解析器标签
在这个标签下,我们可以找到ivy将使用的解析器的描述。在我们的例子中,我们仅使用一个解析器,称为"chain-example",它非常特殊在于它定义了一个解析器列表(或言之链)。
放在在链中的解析器有:
* libraries : 这是一个文件解析器。这个解析器被配置为在包含ivysettings.xml文件的目录下的"repository"子目录查找制品。
* ibiblio : 这个解析器很特殊。它查找ibiblio maven仓库来获取类库。
就这样,我们配置好了解析器链。
2) walkthrough
步骤 1: 准备
打开一个dos或者shell串口,并进入"chained-resolvers"目录。
步骤 2: 清理目录树
在提示符下: ant
这将清理完整的项目目录树和ivy缓存。每次你想清理这个例子的时候你都可以这样做。
清理ivy缓存通常你可以放心的做(除了性能外):它仅仅是缓存,所有的东西都可以从仓库中再次获得。对于从maven2过来的人来说,这听起来有点奇怪,但是记住在ivy中,缓存不是本地仓库,东西被隔离地保持干净。
步骤 3: 运行项目
进入chainedresolvers-project目录,并简单运行ant。
Buildfile: src\example\chained-resolvers\chainedresolvers-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\chained-resolvers\config\ivysettings.xml
[ivy:retrieve] :: resolving dependencies :: [ org.apache | chained-resolvers | working@BEN-ScokartG ]
[ivy:retrieve] confs: [default]
[ivy:retrieve] found [ commons-lang | commons-lang | 2.0 ] in ibiblio
[ivy:retrieve] found [ org.apache | test | 1.0 ] in libraries
[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] (5928ms)
[ivy:retrieve] downloading C:\dev\data\opensource_workspace\ivy\src\example\chained-resolvers\config\repository\test-1.0.jar...
[ivy:retrieve] .. (1kB)
[ivy:retrieve] [SUCCESSFUL ] [ org.apache | test | 1.0 ]/test.jar[jar] (10ms)
[ivy:retrieve] :: resolution report ::
---------------------------------------------------------------------
| | modules || artifacts |
| conf | number| search|dwnlded|evicted|| number|dwnlded|
---------------------------------------------------------------------
| default | 2 | 2 | 0 | 0 || 2 | 2 |
---------------------------------------------------------------------
[ivy:retrieve] :: retrieving :: [ org.apache | chained-resolvers ]
[ivy:retrieve] confs: [default]
[ivy:retrieve] 2 artifacts copied, 0 already retrieved
run:
[mkdir] Created dir: C:\dev\data\opensource_workspace\ivy\src\example\chained-resolvers\chainedresolvers-project\build
[javac] Compiling 1 source file to C:\dev\data\opensource_workspace\ivy\src\example\chained-resolvers\chainedresolvers-project\build
[java] standard message :example world !
[java] capitalized by org.apache.commons.lang.WordUtils : Example World !
[java] upperCased by test.StringUtils : EXAMPLE WORLD !
BUILD SUCCESSFUL
Total time: 12 seconds
我们能看到在resolve任务的日志中,两个依赖被获取(2个制品)并被复制到ivy缓存目录(2个下载)。
run target成功地使用了来自ibiblio仓库的commons-lang.jar和来自本地仓库中的test.jar
3) 更进一步
这个非常简单的例子有助于看到如何对在一个链中的两个解析器进行基本的设置。对于那些想知道这个解析器提供的所有特性的人,可以查看链解析器的参考文档。
从这个基本的例子中尼可以得到的最有趣的事情是:
* 链并不局限于两个内嵌解析器,你可以使用任何你想要的数目。
* 通过设置returnFirst="true",你可以得到一个一旦发现给定模块就停止的链。
* 通过设置dual="true",整个完整的链将被用于模块描述符和制品,而当dual="false",在链中找到模块描述符(如果有任何一个)的解析器将被用于查找制品。
发表评论
-
搜索maven依赖的网站推荐
2011-12-02 16:04 4318使用maven填写依赖的时候,常会遇到需要查一下gro ... -
hudson中subversion HEAD check out 的问题及疑惑
2010-09-30 10:56 40近期发现一个问题,hudson执行任务时,经常不能获取 ... -
你走你的阳光道,我走我的独木桥:整合ant ivy 和testng
2010-05-31 16:11 2074近期自己折腾自己,放着正统的maven + jun ... -
slf4j1.6.0-RC0和logback的0.9.20版本不兼容
2010-04-26 08:54 3513今天,尝试使用slf4j + logback的黄金组合,结果发 ... -
fisheye2.2.1 & Crucible 2.2.1 安装配置笔记
2010-04-27 16:48 31841) 下载 从atlassian网站 ... -
让ivy支持maven的classifier属性
2009-10-15 01:56 3183在maven中,对于一个依赖,除了groupId,ar ... -
ivy教程(1)-目录
2009-09-21 23:57 2948学习的最佳方式是实践!这是ivy教程将帮助你做到的 ... -
ivy教程(2)-快速开始
2009-09-22 11:48 3060在这个例子中,我们将看到使用ivy的一个最简单的方 ... -
ivy教程(3)-调整默认设置
2009-09-24 20:58 2356ivy绑定一些默认 ... -
ivy教程(5)-双重解析器
2009-09-27 20:58 1718在一些情况下,会发生这样的事情:你的模块描述符(ivy ... -
ivy教程(6)-项目依赖
2009-09-29 23:32 3005这个示例将举例说明在两个项目之间的依赖。 depen ... -
ivy教程(7)-在多项目环境下使用ivy
2009-10-03 11:48 2368在上一个教程中,你已 ... -
ivy教程(8)-使用ivy模块配置
2009-10-04 10:15 2667这个教程介绍ivy文件中的模块配置的使用。ivy模块配置事实上 ... -
ivy教程(9)-架设仓库(1)-介绍
2009-10-04 13:42 1851install任务让你从一个仓库复制一个模块或者模 ... -
ivy教程(10)-架设仓库(2)-基础仓库复制
2009-10-04 15:04 3052在这个步骤中我们使用install任务来从mave ... -
ivy教程(11)-架设仓库(3)-使用命名空间
2009-10-09 21:04 2256现在你已经看到从一个已经存在的仓库创建你自己的仓库是如何的简单 ... -
ivy教程(12)-更多例子
2009-10-09 21:29 1817如果你已经成功的跟随并理解了所有的教程,可能你还是需要得到更好 ... -
ivy中文参考文档(21)-ant任务(9)-post resolve tasks
2009-09-15 14:17 14661) post resolve tasks ... -
ivy中文参考文档(20)-ant任务(8)-cachefileset
2009-09-03 23:11 13931) cachefileset 为配置构建一个有iv ... -
ivy中文参考文档(18)-ant任务(6)-deliver
2009-08-31 22:22 14631) deliver 交付当前模块的解析好的描述符, ...
相关推荐
4 Android Android Android Android 手机新概念 操作系统的选择 -------- 定制和长尾 � 重构 � MVC 和 Web APP 架构 Android Android Android Android 开发背景 � 计算技术、无线接入技术的发展,使嵌入式系统...
- 支持 Web 应用程序的开发,包括 MVC 控制器、视图解析器等。 - **测试(Test)** - 提供了一系列工具来帮助开发者编写单元测试和集成测试。 - **2.3 使用场景** - Spring 框架适用于多种应用场景,从简单的单体...
- **Ivy依赖管理**:对于使用Apache Ivy作为构建工具的项目,Spring同样提供了依赖管理支持。 **5. 日志记录** - **使用Log4j**:Spring支持多种日志框架,其中Log4j是一种常用的日志解决方案。 - **避免使用...
1. **查询解析器(QueryParser)**:将用户输入的查询字符串转化为 Lucene 可识别的 Query 对象。支持布尔运算符(AND、OR、NOT)、通配符、短语搜索等。 2. **搜索器(IndexSearcher)**:用于执行查询并返回结果...
Spring的使用场景和依赖管理也被涵盖在教程中,例如如何使用Maven和Ivy进行依赖管理,以及日志相关的配置,包括不使用Commons Logging,使用SLF4J和Log4J。 Spring Framework版本3.2引入的新特性和增强功能,主要...
### 戴尔Dell 5420-7420拆机示意图与关键配置解析 #### 一、概述 本文将详细介绍戴尔Dell 5420与7420型号笔记本电脑的拆机步骤及主要硬件配置差异。尽管这两款设备在外观上极为相似,但它们在处理器、内存、显示卡...
- **Web**:支持 Web 应用程序的开发,包括 MVC 控制器、视图解析等。 - **AOP 和 Instrumentation**:支持面向切面编程以及 Java 代理技术。 - **测试**:提供针对 Spring 应用程序的单元测试和集成测试支持。 **...
- **1.3.2.3 使用Log4J**:介绍了如何配置并使用Log4J作为日志记录器。 #### 第二部分:Spring 3 的新特性 ##### 第2章:Spring 3.0 的新特性和增强 - **2.1 Java 5**:Spring 3.0版本开始全面支持Java 5。 - **...
- **Ivy依赖管理**:Ivy是另一种流行的依赖管理工具,Spring也支持通过Ivy进行依赖管理。 #### 1.3.2 日志 Spring框架支持多种日志框架,可以根据项目需求选择合适的方式: - **不使用Commons Logging**:对于不...
通常,"角"在IT语境中可能指的是软件的一个角落情况或边缘案例,而"ivy-bvyffy"则无法直接解析为标准的编程术语或概念。因此,这个描述可能并不是提供具体知识点的,但可以推测项目可能涉及处理复杂或特殊情况。 ...
### Spring Framework 中文知识点解析 #### 一、Spring框架概述 **Spring框架**是一个轻量级的开源框架,主要用于简化企业级应用的开发。它通过提供一个强大的倒置控制(Inversion of Control, IoC)容器来管理...
SBT支持依赖管理和解析依赖冲突,利用Ivy作为其依赖管理器。SBT允许用户定义自己的设置和任务,以及插件的使用,这样可以扩展SBT的功能,包括为项目添加自定义构建逻辑或者复用别人开发的插件。 在实际的项目开发中...