4

在常春藤依赖中,

Q1。 和有什么区别

conf="运行时->编译"

对比

conf="运行时->编译(*)"

额外的括号通配符有什么作用?

Q2。

以下是做什么的?

conf="编译->编译(*)"

这不是周期性/自依赖吗?将 conf 映射回自身有什么意义?

4

2 回答 2

3

括号是一个后备

从 1.3 开始,当您不确定依赖项是否具有所需的配置时,可以使用回退机制。您可以向 ivy 表明您想要一种配置,但如果它不存在,请使用另一种配置。指定它的语法在所需的 conf 之后的括号之间添加了备用 conf。例如,

test->runtime(default)
意味着在test模块的
runtime
配置中依赖的conf是必需的,但如果不存在,它将使用
default
conf代替。如果默认配置不存在,那么它将被视为错误。请注意,* 通配符可以用作后备配置。

对于问题 2:一个 conf 总是这样读:

ConfFromThisFile -> ConfFromDependency

所以

compile->compile

compile会将依赖项的配置映射到compile该文件的配置。它没有循环。括号说:如果compile依赖项中不存在,则使用*.

有关依赖关系,请参阅 ivy 文档的配置映射部分。

于 2012-09-04T19:24:55.303 回答
1

此语法用于依赖回退。runtime->compile意味着运行时配置取决于编译配置。编译配置必须存在,否则 Ivy 会报错。但是,runtime->compile(*)将首先尝试编译配置以满足依赖关系。但如果 compile 不存在,它将尝试所有其他配置。有关更多信息,请参阅Ivy 文档的配置映射部分。

基于此,compile->compile(*)将表明编译需要任何(全部?)配置。我猜这compile->(*)不是有效的语法,所以额外compile 保证使用回退,因为compile直到配置 XML 节完成后才定义。

请注意,从文档中不清楚是(*)指“任何”还是“所有”配置。所以,我不确定 Ivy 是否会在匹配所有依赖项(如果有的话)的第一个配置处停止,或者它是否会在联合中引入所有其他配置。

于 2012-09-04T19:23:22.520 回答