当前位置: 首页 > 面试题库 >

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

臧烨烁
2023-03-14
问题内容

我找不到有关Ivy依赖项标签的 conf 属性的详尽解释:

<dependency org="hibernate" name="hibernate" rev="3.1.3" conf="runtime, standalone -> runtime(*)"/>

看到那个 conf 属性吗?我找不到关于该->符号右侧的任何解释(我能理解)。请记住,我不了解有关Maven的第一件事,因此请考虑一下此属性。

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

谢谢,


问题答案:

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

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

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

  • 需要什么工件(罐子,战争,…)。
  • 您对其他模块的依赖性,并描述所需的依赖性配置。这称为配置映射。

因此,conf属性精确地做到了这一点:描述依赖项的配置映射。
该映射的子元素是你的“右手边->符号”,并表示映射的依赖配置的名称。'*'通配符可用于指定此模块的所有配置。

请参阅Charlie Hubbard的 “
常春藤配置的最简单说明 ”中的更多内容

其中的重要部分是Ivy下载依赖项并组织它们。

常春藤模块(即ivy.xml文件)具有两个主要部分:

  • 您需要什么依赖项?
  • 您希望他们如何组织?

第一部分配置在<dependencies>元素下。
第二个由<configurations>元素控制

当Ivy下载这些依赖项时,它需要知道在提取这些传递性依赖项时要使用的范围(我们是否将其用于测试,运行时,编译等)?我们必须告诉Ivy如何将我们的配置映射到Maven范围,以便它知道要提取的内容。

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

这意味着:

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

问题在于,休眠可以与多个缓存实现,多个连接池实现一起使用,而…不能通过作用域进行管理,而Ivy配置为此类问题提供了一种优雅的解决方案。
例如,在Ivy中, 假设hibernate具有一个像这样的Ivy文件 ,那么您可以声明一个类似的依赖项:

<dependency org="hibernate" name="hibernate" rev="2.1.8" conf="default->proxool,oscache"/>

通过其proxool和oscache实现进入休眠状态,如下所示:

<dependency org="hibernate" name="hibernate" rev="2.1.8" conf="default->dbcp,swarmcache"/>

使dbcp和swarmcache进入休眠状态。

通过将默认master配置映射到“ proxool,oscache”或“ dbcp,swarmcache”,可以从“休眠”模块中 确切
指定所需的内容。

通过列出为与该库关联的每个模块定义的Ivy配置,可以找到那些“ proxool,…”参数。例如:

<ivy-module version="2.0">
<info organisation="ssn-src" module="pc"/>
<configurations defaultconfmapping="default->default">
    <conf name="default" />
    <conf name="provided" description="they are provided by the env." />
    <conf name="compile" extends="default,provided" />
    <conf name="war" extends="default"/>
</configurations>
<dependencies>

范例:

假设modA有两个配置,默认和测试。
实际上,要忽略conf依赖项元素的属性将是非常不寻常的。
ivy.xmlmodA可能有依赖性:

<dependency org="theteam" name="modB" rev="1.0" conf="default->*" />

您从默认开始,而不是从默认和测试开始。

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

<dependency org="theteam" name="modB" rev="1.0" conf="default->*conf1*" />


 类似资料:
  • 我很难理解WPF中的依赖属性,可能是因为我要找的用例非常具体,没有很好的文档化。 我有一个自定义控件,看起来像这样(请忽略所有可怕的代码,这是暂时的!): 我这样称呼它在我的主窗口内: 我只想在主窗口中的自定义控件调用中说: (其中fillPercent是另一个脚本中不需要担心的内容)。该控件将被展开,因此需要保持为自定义控件。我明白我可能需要依赖属性,但在尝试了许多不同的方法后,我无法弄清楚如何

  • 本文向大家介绍wpf 附加的依赖项属性,包括了wpf 附加的依赖项属性的使用技巧和注意事项,需要的朋友参考一下 示例 何时使用 附加属性是一种依赖项属性,可以将其应用于任何属性,DependencyObject以增强了解该属性存在的各种控件或服务的行为。 附加属性的一些用例包括: 有一个父元素遍历其子元素并以某种方式作用于子元素。例如,Grid控制使用Grid.Row,Grid.Column,Gr

  • 本文向大家介绍wpf 只读依赖项属性,包括了wpf 只读依赖项属性的使用技巧和注意事项,需要的朋友参考一下 示例 何时使用 只读的依赖项属性与普通的依赖项属性相似,但其结构不允许从控件外部设置其值。如果您拥有仅供消费者参考的属性,则此方法很好用,例如IsMouseOver或IsKeyboardFocusWithin。 如何定义 与标准依赖项属性一样,只读依赖项属性必须在从派生的类上定义Depend

  • 本文向大家介绍wpf 标准依赖项属性,包括了wpf 标准依赖项属性的使用技巧和注意事项,需要的朋友参考一下 示例 何时使用 几乎所有的WPF控件都大量使用依赖属性。依赖项属性允许使用许多仅标准CLR属性无法使用的WPF功能,包括但不限于对样式、动画、数据绑定、值继承和更改通知的支持。 TextBox.Text属性是需要标准依赖项属性的简单示例。在这里,如果Text是标准的CLR属性,则无法进行数据

  • 我给ivy添加了一个依赖项(我们称之为a)。在maven central中具有pom文件的xml。Ivy使用ibiblio来解析maven依赖项。添加到常春藤中的依赖项(A)。xml具有可传递依赖项(B)。到目前为止,一切都很好。传递依赖(B)的依赖(C)不能用常春藤来解决。 我在常春藤上定义了一个新的名字。如下所示的xml: 在B的pom文件中,C在编译和测试范围中定义如下: 当我在ivy的缓存

  • 问题内容: 当我将字符串值1和7存储到“ mykey”中时, redis中到底存储了 什么?以及getbit在redis中如何工作? 有人试图在该值内循环位吗? 我知道bitcount会给我2,但我也想从中获得确切的字符串值1和7,这可能吗? -- 我通过使用erlang redis客户端读取输出进行了一些实验。 erlang输出: 然后删除此条目: 我做同样的事情来偏移2 4 8,在这里您可以看