当前位置:  开发笔记 > 编程语言 > 正文

有人可以解释ivy.xml依赖的conf属性吗?

如何解决《有人可以解释ivy.xml依赖的conf属性吗?》经验,为你挑选了4个好方法。

我找不到任何关于Ivy依赖标记的conf属性的详尽解释:


看到conf属性?关于->符号的右侧,我找不到任何解释(我能理解).请记住,我不知道关于Maven的第一件事,所以请用这个考虑解释这个属性.

是的,我已经看过这个:http://ant.apache.org/ivy/history/latest-milestone/ivyfile/dependency.html

谢谢,



1> VonC..:

首先,Ivy不是Maven ;)
Maven2是一个软件项目管理和理解工具,而Ivy只是一个依赖管理工具.

Ivy严重依赖于一种称为配置的独特概念.
在Ivy中,模块配置是一种使用或查看模块的方法.
例如,您可以在模块中进行测试和运行时配置.但您也可以拥有MySQL和Oracle配置.或者是Hibernate和JDBC配置.

在每个配置中,您可以声明:

什么神器(罐子,战争......)是必需的.

您对其他模块的依赖关系,并描述您需要的依赖关系的配置.这称为配置映射.

因此conf属性正是这样:描述依赖项的配置映射.
该映射的子元素是你的"右手边->符号",并表示映射的依赖配置的名称.'*'通配符可用于指定此模块的所有配置.


Maven2侧面有一个叫做范围的东西.
您可以将依赖项声明为测试作用域或构建时作用域的一部分.
然后,根据此范围,您将获得依赖项工件(maven2中每个模块只有一个工件)及其依赖项,具体取决于它们的范围.范围是在maven2中预定义的,您无法更改.

这意味着:

这里有很多下载的许多图书馆不必要的依赖.
例如,Hibernate下载了一堆JBoss JAR,Display Tag下载了所有各种Web框架JAR.我发现自己排除了几乎与我添加的依赖关系.

问题是hibernate可以与几个缓存实现,几个连接池实现一起使用......而且这不能用范围管理,常春藤配置为这类问题提供了一个优雅的解决方案.
例如,在Ivy中,假设hibernate有一个像这样的Ivy文件,那么你可以声明一个像这样的依赖:


通过它的proxool和oscache实现获得休眠,并且像这样:


使用dbcp和swarmcache获取hibernate.

通过映射默认master配置为" proxool,oscache"或" dbcp,swarmcache",您可以指定需要的正是从模块"休眠".


您可以通过列出为与库关联的每个模块定义的Ivy配置来查找这些"proxool,..."参数.例如:




    
    
    
    


示例:

我们假设modA有两种配置,默认和测试.
实际上,想要省略conf依赖元素的属性是非常不寻常的.
ivy.xmlmodA可能有依赖性:


你是从默认开始,而不是默认和测试.

上面的例子使modA的默认值取决于modB的conf1,conf2和conf3.
或者您可能想说modA的默认值仅取决于modB的conf1:



好吧,我想我几乎得到了它.但是你在哪里找到你的选择?你怎么知道你可以说proxool,oscache/dbcp,swarmcache?
通过排除默认的传递依赖项并使您的选择明确,可以在Maven中解决“下载的不必要的依赖项”的问题。但我将是第一个承认它绝不是“优雅”的人。
+1表示非常明确的反应; 另见http://ant.apache.org/ivy/history/latest-milestone/tutorial/conf.html

2> chubbsondubs..:

我已经阅读了这些答案,坦率地说,我觉得它们没有用.我认为它们可以改进,所以我通过展示一个实际的例子写下了我如何使用和理解配置:

http://wrongnotes.blogspot.com/2014/02/simplest-explanation-of-ivy.html

不幸的是,你必须对maven及其依赖关系有一点了解,因为Ivy正在使用Maven存储库来下载这些jar文件,所以Ivy必须理解Maven并将它传递给你.但是,我认为我保持它非常简单,而不会过多关于maven的细节.



3> Espen..:

谢谢VonC!

它帮助我进一步.

对于选项(配置)tieTYT,您可以在Ivy存储库的常春藤[版本号] .xml文件中找到它们:组织名称 - >模块名称.

从http://www.springsource.com/repository/app/下载的JUnit 4.6修订版中的示例配置元素.


    
    
    
    

在我的项目的ivy.xml文件中,我有一个配置编译测试.在dependencies元素中,我有以下依赖项:


如您所见,我的编译测试配置取决于JUnit的ivy.xml文件中的编译配置.



4> Archie..:

它帮助我一次以这种方式理解事物:

    常春藤配置只是模块工件的某个子集的名称.

    模块之间的依赖关系根据配置名称指定.

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有