我找不到任何关于Ivy依赖标记的conf属性的详尽解释:
看到conf属性?关于->
符号的右侧,我找不到任何解释(我能理解).请记住,我不知道关于Maven的第一件事,所以请用这个考虑解释这个属性.
是的,我已经看过这个:http://ant.apache.org/ivy/history/latest-milestone/ivyfile/dependency.html
谢谢,
丹
首先,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.xml
对modA
可能有依赖性:
你是从默认开始,而不是默认和测试.
上面的例子使modA的默认值取决于modB的conf1,conf2和conf3.
或者您可能想说modA的默认值仅取决于modB的conf1:
我已经阅读了这些答案,坦率地说,我觉得它们没有用.我认为它们可以改进,所以我通过展示一个实际的例子写下了我如何使用和理解配置:
http://wrongnotes.blogspot.com/2014/02/simplest-explanation-of-ivy.html
不幸的是,你必须对maven及其依赖关系有一点了解,因为Ivy正在使用Maven存储库来下载这些jar文件,所以Ivy必须理解Maven并将它传递给你.但是,我认为我保持它非常简单,而不会过多关于maven的细节.
谢谢VonC!
它帮助我进一步.
对于选项(配置)tieTYT,您可以在Ivy存储库的常春藤[版本号] .xml文件中找到它们:组织名称 - >模块名称.
从http://www.springsource.com/repository/app/下载的JUnit 4.6修订版中的示例配置元素.
在我的项目的ivy.xml文件中,我有一个配置编译测试.在dependencies元素中,我有以下依赖项:
如您所见,我的编译测试配置取决于JUnit的ivy.xml文件中的编译配置.
它帮助我一次以这种方式理解事物:
常春藤配置只是模块工件的某个子集的名称.
模块之间的依赖关系根据配置名称指定.