`

ivy教程(4)-多解析器

阅读更多


    这个例子演示模块是如何被多解析器获得的。使用多解析器在很多情况下是非常有用的,这里是一些例子:

    * 来自发行的单独的集成构建
    * 为第三方模块使用公共仓库并且为内部模块使用私有仓库
    * 使用一个仓库来存储那些在无法管理的公共仓库里里面的不清晰的模块
    * 使用本地仓库来暴露在一个开发人员的位置上生成的构建

    在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文件:

< ivy-module  version ="1.0" >
    
< 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.

< ivysettings >
  
< 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缓存。每次你想清理这个例子的时候你都可以这样做。

    在几乎所有的例子中,我们提供clean target作为默认的target。既然大部分例子使用相同的ivy缓存,每次你调用这个target时你将清理这个ivy缓存。
    清理ivy缓存通常你可以放心的做(除了性能外):它仅仅是缓存,所有的东西都可以从仓库中再次获得。对于从maven2过来的人来说,这听起来有点奇怪,但是记住在ivy中,缓存不是本地仓库,东西被隔离地保持干净。


    步骤 3: 运行项目
    进入chainedresolvers-project目录,并简单运行ant。

I:\chained-resolvers\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",在链中找到模块描述符(如果有任何一个)的解析器将被用于查找制品。

0
0
分享到:
评论

相关推荐

    新版Android开发教程.rar

    4 Android Android Android Android 手机新概念 操作系统的选择 -------- 定制和长尾 � 重构 � MVC 和 Web APP 架构 Android Android Android Android 开发背景 � 计算技术、无线接入技术的发展,使嵌入式系统...

    SPRING-framework5 最新英文版 详细教程

    - 支持 Web 应用程序的开发,包括 MVC 控制器、视图解析器等。 - **测试(Test)** - 提供了一系列工具来帮助开发者编写单元测试和集成测试。 - **2.3 使用场景** - Spring 框架适用于多种应用场景,从简单的单体...

    spring-framework-reference-4.3.19.pdf

    - **Ivy依赖管理**:对于使用Apache Ivy作为构建工具的项目,Spring同样提供了依赖管理支持。 **5. 日志记录** - **使用Log4j**:Spring支持多种日志框架,其中Log4j是一种常用的日志解决方案。 - **避免使用...

    lucene详细使用教程

    1. **查询解析器(QueryParser)**:将用户输入的查询字符串转化为 Lucene 可识别的 Query 对象。支持布尔运算符(AND、OR、NOT)、通配符、短语搜索等。 2. **搜索器(IndexSearcher)**:用于执行查询并返回结果...

    Spring Framework version 3.2 官方教程

    Spring的使用场景和依赖管理也被涵盖在教程中,例如如何使用Maven和Ivy进行依赖管理,以及日志相关的配置,包括不使用Commons Logging,使用SLF4J和Log4J。 Spring Framework版本3.2引入的新特性和增强功能,主要...

    戴尔Dell 5420-7420拆机示意图

    ### 戴尔Dell 5420-7420拆机示意图与关键配置解析 #### 一、概述 本文将详细介绍戴尔Dell 5420与7420型号笔记本电脑的拆机步骤及主要硬件配置差异。尽管这两款设备在外观上极为相似,但它们在处理器、内存、显示卡...

    spring 3.1 参考手册 英文

    - **Web**:支持 Web 应用程序的开发,包括 MVC 控制器、视图解析等。 - **AOP 和 Instrumentation**:支持面向切面编程以及 Java 代理技术。 - **测试**:提供针对 Spring 应用程序的单元测试和集成测试支持。 **...

    Spring 3 中文帮助文档..pdf

    - **1.3.2.3 使用Log4J**:介绍了如何配置并使用Log4J作为日志记录器。 #### 第二部分:Spring 3 的新特性 ##### 第2章:Spring 3.0 的新特性和增强 - **2.1 Java 5**:Spring 3.0版本开始全面支持Java 5。 - **...

    spring帮助文档

    - **Ivy依赖管理**:Ivy是另一种流行的依赖管理工具,Spring也支持通过Ivy进行依赖管理。 #### 1.3.2 日志 Spring框架支持多种日志框架,可以根据项目需求选择合适的方式: - **不使用Commons Logging**:对于不...

    UCSD-CASA:用StackBlitz创建:high_voltage:

    通常,"角"在IT语境中可能指的是软件的一个角落情况或边缘案例,而"ivy-bvyffy"则无法直接解析为标准的编程术语或概念。因此,这个描述可能并不是提供具体知识点的,但可以推测项目可能涉及处理复杂或特殊情况。 ...

    Spring Framework 中文

    ### Spring Framework 中文知识点解析 #### 一、Spring框架概述 **Spring框架**是一个轻量级的开源框架,主要用于简化企业级应用的开发。它通过提供一个强大的倒置控制(Inversion of Control, IoC)容器来管理...

    SBT in Action(SBT实战)

    SBT支持依赖管理和解析依赖冲突,利用Ivy作为其依赖管理器。SBT允许用户定义自己的设置和任务,以及插件的使用,这样可以扩展SBT的功能,包括为项目添加自定义构建逻辑或者复用别人开发的插件。 在实际的项目开发中...

Global site tag (gtag.js) - Google Analytics